zoukankan      html  css  js  c++  java
  • 排行榜功能redis实现设想

    最近接到一个需求,用户可以进行某种设计,然后发表收取点赞,需要做排行榜,基本需求如下
    (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)是否在集合中
     
  • 相关阅读:
    oracle权限配置
    oracle锁表处理
    小组成员
    个人项目 Individual Project
    Java单元测试框架 JUnit
    MyEclipse的快捷键大全(超级实用,方便)
    vs2008 连接 vss2005 出现 analyze utility 错误的解决方法
    EXTJS gridpanel 动态设置表头
    IE8不能上网的问题
    一些事件的评论
  • 原文地址:https://www.cnblogs.com/liutengfei/p/6700001.html
Copyright © 2011-2022 走看看