使用redis设计一个排行榜

公司的app里面需要加一个排行榜的功能,做完之后,分享给大家

思路

入口MQ----------操作Redis-----------同步mysql

实现方式

使用了redis的排行榜的功能

MQ consumer

String publicKey="rank.public";
String privateKey = "rank.private_"

public void updateRank(int userId,long score){
    
     //更新排行榜缓存
     redisClient.zincrby(publicKey,score,userId);
     //维护单个用户
     redisClient.incrBy(privateKey+userId,score);
    //异步更新mysql:因人而异(就不写出来了,简单的一个线程工具)
    UpdateQueue.update(userId,score);
}
public void queryRankTopFive(){
   //查询前5
  Set<String> zrange = redisClient.zrevrange(publicKey,0,4);
   //得到之后就可以去按照自己业务去做一些封装了
  zrange.forEach(key -> {
        Long score = redisClient.get(privateKey+key);
        System.out.println(key+":"+score);
  });
}

这样一个排行榜就设计完成了.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容