为什么用Redis做排行榜?

打印 上一主题 下一主题

主题 544|帖子 544|积分 1632


  • 数据结构方面:Redis的sorted set结构用来排名很方便,谁得分高谁排名往上。
  • 排行榜是时限性业务。具有周期性。超出时间,自动删除。Redis的超时设置很好实现。
  • 排行榜是热点数据。读多写少,Redis能减轻数据库压力。
  • 数据库使用limit查询排名靠后的数据性能差,效率低。
    select * from table limit 10000, 100
源码:
  1. @ResponseBody
  2. @GetMapping("/post/hots")
  3. public Result hotPost() {
  4.     // 从redis获取排行榜
  5.     Set<ZSetOperations.TypedTuple> lastWeekRank = redisUtil.getZSetRank("last_week_rank", 0, 6);
  6.     List<Map<String, Object>> hotPosts = new ArrayList<>();
  7.     for (ZSetOperations.TypedTuple typedTuple : lastWeekRank) {
  8.         Map<String, Object> map = new HashMap<>();
  9.         map.put("comment_count", typedTuple.getScore());
  10.         map.put("id", redisUtil.hget("rank_post_" + typedTuple.getValue(), "post:id"));
  11.         map.put("title", redisUtil.hget("rank_post_" + typedTuple.getValue(), "post:title"));
  12.         hotPosts.add(map);
  13.     }
  14.     return Result.succ(hotPosts);
  15. }
复制代码
注意: 一定要答全,不然很泪目。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

兜兜零元

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表