2020年7月2日
redis 各个数据结构的应用场景
String
1.存共享数据,比如session共享,token共享等,也可以存一些其他的数据,比如直接序列化之后存一些json,map,list之类的都可以。
2.分布式锁。setnx,expire,lua等配合
3.计数器等 incr、incrby、decr、decrby
hash 类似hashmap,可以存key、value的结构
1.购物车之类的
2.部分数据变更,如果用string,需要反序列化,修改,在序列话保存。
list
1.可以做简单的消息队列
2.ltrim可以实现始终只有最新的N个元素,这样子,新的数据常驻缓存,老的数据获取才走数据库,比如个人的最新微博
3.可以实现一个高效的列表等(不需要按时间查询 &&(不分页||更新频率低))
set
1.可以实现交集、并集、差集等计算,可以用于共同好友等功能
2.sismember 实现黑、白名单
3.srandmember 实现一个随机展示
sorted set
1.排行榜
2.有序集合
3.zrangebyscore 可以实现某个分数以上的查找
Pub/Sub
Pub/Sub 从字面上理解就是发布(Publish)与订阅(Subscribe),在Redis中,你可以设定对某一个key值进行消息发布及消息订阅,当一个key值上进行了消息发布后,所有订阅它的客户端都会收到相应的消息。这一功能最明显的用法就是用作实时消息系统,比如普通的即时聊天,群聊等功能。

https://www.cnblogs.com/markhe/p/5689356.html
多说两句,有缓存的功能,一般操作是先读缓存,没有命中的话,读取数据库,更新缓存。如果是更新操作,更新数据库,然后删除缓存。这里不更新缓存,是懒加载的思想,如果是热点数据,还是需要加锁并更新的。