应用场景
Redis
自身缓存数据功能。
Redis 的 setnx 命令来完成分布式锁。
String
常规的数据存储、支持计数功能。
计数器/限速器,统计类似用户点赞数、用户访问数等;限速器比较典型的使用场景是限制某个用户访问某个 API 的频率,常用的有抢购时,防止用户疯狂点击带来不必要的压力。
Hash
存放结构化对象,如购物车,用户信息等等。
单点登录时存储用户信息,CookieID 作为 Key,设置 30 分钟缓存过期,模拟 Session 效果。
List
List 可以用于列表,如消息队列,lpop 和 rpush (或者反过来,lpush 和 rpop )能实现队列的功能。
朋友圈的点赞列表、评论列表等。
利用 lrange 命令,实现分页功能。
Set
利用唯一性,统计访问网站的独立 IP。
利用交集计算相似性,利用差集获得独特喜好。
Key 对应用户,value 对应用户的好友。可以利用 sinter 计算共同好友,利用 sismember 判断是否是好友,利用 scard 好友数量,利用 smove 好友转移。好友推荐使用并集。
srandmember 命令,首页贴图随即展示,随机中奖用户。
ZSet
动态的排行榜。例如,value 是对象,score 是排名依据;value 存储学生 ID,score 存储学生成绩。
延时任务。例如,value 为对象,score 为时间,按照执行时间进行排序,定时查询 zset 中最小的元素,如果到时间则执行。
Cluster
数据共享。
Session 共享,以 PHP 为例,默认 Session 是保存在服务器的文件中,如果是集群服务,同一个用户过来可能落在不同机器上,这就会导致用户频繁登陆;采用 Redis 保存 Session 后,无论用户落在那台机器上都能够获取到对应的 Session 信息。
Pub/Sub
发布订阅功能。