目录
链表List
常用的数据结构:
Stack(栈)= LPUSH + LPOP = FILO 先进后出
QUEUE(队列) = LPUSH + RPOP 先进先出
Blocking MQ(阻塞队列) = LPUSH + BRPOP
使用场景:
# 微博、公众号大V发文章推送给关注者的时候
# 比如 xxx关注了胡歌、彭于晏
胡歌发微博,消息ID为1001 LPUSH msg:{xxx-ID} 1001
彭于晏发微博,消息ID为1002 LPUSH msg:{xxx-ID} 1002
查看最新微博消息 LRANGE msg:{xxx-ID} 0 4(最近5条消息)
集合Set
常用语法
交集 SINTER set1 set2 set3 ->{交集} (set1 2 3是集合)
SUNION set1 set2 set3 ->{并集}
SDIFF set1 set2 set3 ->{差集} set1-set2和set3的并集
应用场景
微信抽奖小程序
点击参与抽奖加入集合 SADD key {userId}
查看所有抽奖用户 SMEMBERS key
抽取count名中奖者 SRANDMEMBER/SPOP key [count]
SRANDMEMBER:中奖后不会从集合中删去
SPOP:中奖后会被从集合中删去
微信点赞收藏
点赞 SADD like:{消息ID} {用户ID}
取消点赞 SREM like:{消息ID} {用户ID}
检查用户是否点过赞 SISMEMBER like:{消息ID} {用户ID}
获取点赞的用户列表 SMEMBERS like:{消息ID}
获取点赞用户数 SCARD like:{消息ID}
有序集合Zset
应用场景
微博排行榜
点击新闻 ZINCRBY hotNews:20190819 1 守护香港
展示当日排名前十 ZREVRANGE hotNews:20190819 0 9 WITHSCORES
七日搜索榜单计算 ZUNIONSTORE hotNews:20190813-20190819(这是新生成的key) 7 hotNews:20190813 hotNews:20190814... hotNews:20190819
展示七日排行前十 ZREVRANGE hotNews:20190813-20190819 0 9 WITHSCORES