应用场景

Redis

自身缓存数据功能。
Redis 的 setnx 命令来完成分布式锁。

String

常规的数据存储、支持计数功能。
计数器/限速器,统计类似用户点赞数、用户访问数等;限速器比较典型的使用场景是限制某个用户访问某个 API 的频率,常用的有抢购时,防止用户疯狂点击带来不必要的压力。

Hash

存放结构化对象,如购物车,用户信息等等。
单点登录时存储用户信息,CookieID 作为 Key,设置 30 分钟缓存过期,模拟 Session 效果。

List

List 可以用于列表,如消息队列,lpoprpush (或者反过来,lpushrpop )能实现队列的功能。
朋友圈的点赞列表、评论列表等。
利用 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

发布订阅功能。