Redis百度使用场景实战
一.计数器
例如:阅读量,点赞数等等
计算文章阅读量:incr+article:readcount:{文章id}
获取文章阅读量:+get+article:readcount:{文章id}
二.微信朋友圈关注消息模型
例如:Darren老师关注了qiuxiang,king老师
1.qiuxiang发朋友圈,消息id为1000+lpush+msg:{Darren-id} 1000
2.king发朋友圈,消息id为1010+lpush+msg:{Darren-id} 1010
3.Darren老师查看最新的朋友圈lrange+msg:{darren-id} 0 5
三.电商购物车
1.以用户id为key,商品id为field,商品数量为value,
例如:获取购物车中所有商品
hgetall cart:{用户id}
添加商品hset cart:{用户id} {商品id} 1
删除商品hdel cart:{用户id} {商品id}
增加商品数量
hincrby cart:{用户id} {商品id} 1
商品总数
hgetall+cart:{用户id}
四.即时通讯
例如:qq微信未读消息数量处理
解决:利用hash
1.以用户id为key;
2.好友或群id为field;
3.未读消息数量为value
五.微信抽奖小程序
1.点击参与抽奖加入集合 sadd key {userid}
2.查看参与抽奖所有用户 smembers key
3.随机抽取n名中奖者 srandmember key [n]或spop key [n]
六.朋友圈点赞
1.点赞 sadd like:{消息id} {点赞用户id}
2.取消点赞 srem like:{消息id} {点赞用户id}
3.检查用户是否点过赞 sismember like:{消息id} {点赞用户id}
4.获取点赞用户列表 smembers like:{消息id}
5.获取点赞用户数量 scard like:{消息id}
七:集合实现微博/微信关注模型
1.darren老师关注的人 sadd darrenset qiuxiang lee king
2.qiuxiang老师关注的人 sadd qiuxiangset darren ting lee king
3.darren和qiuxiang的共同关注(交集) sinter darrenset qiuxiangset
4.darren关注的人是否也关注king sismember qiuxiangset king
5.darren可能认识的人 sdiff qiuxiangset darrenset
八.有序集合实现微博热搜,排行榜
1.浏览新闻
zincrby hotnews:20200411 1 {新闻标题}
2.展示当前日期前10
zrevrange hotnews:20200411 0 9 WITHSCORES
3.3天热搜榜单统计 zunionstore hotnews:20200409-20200411 3 hotnews:20200409 hotnews:20200410 hotnews:20200411
4.展示3天排行前10 zrevrange hotnews:20200409-20200411 0 10 WITHSCORES