首页 > 其他 > 详细

排行榜功能redis实现设想

时间:2017-04-12 16:59:58      阅读:251      评论:0      收藏:0      [点我收藏+]
最近接到一个需求,用户可以进行某种设计,然后发表收取点赞,需要做排行榜,基本需求如下
(1)排行榜按照点赞数量倒序排列,分页获取,每页20条
(2)用户可以点赞和取消点赞,需要记录用户和记录的点赞关系(已点赞/未点赞)
(3)排行榜和点赞数量会很大,假设排行榜有1万条数据,每条数据又1万个点赞,总共1亿条数据
 
然后有了如下设想
(1)用redis有序集合保存排行榜,分数就是设计的点赞数
分页获取排行榜和点赞数:【ZREVRANGE  key start stop WITHSCORES】获取排行榜就用分数倒序排列,获取start到top条数据,可以满足分页需求
获取排行榜设计总数:【zcard key】
新增设计到排行榜:【ZADD key scroe member 】加入设计id和对应的点赞数(默认为0)到排行榜有序集合中
从排行榜删除设计:【ZREM key member1】从排行榜有序集合中删除设计id
点赞和取消点赞操作:【ZINCREBY key increment member】ZINCRBY命令可以增加一个元素的分数,当分数为负数时,表示减分,返回值是更改后的分数
 
(2)用redis集合保存设计点赞人
点赞操作:【SADD key member 】加入用户的手机唯一标识(或者用户id)到set中
取消点赞操作:【SREM key member 】从set中删除用户的手机唯一标识(或者用户id)
判断用户是否进行过点赞:【SISMEMBER key member】判断用户手机唯一标识(或者用户id)是否在集合中
 

排行榜功能redis实现设想

原文:http://www.cnblogs.com/liutengfei/p/6700001.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!