zoukankan      html  css  js  c++  java
  • 实现排行榜神器——redis zset

    需求:假如现在需要搞个 “运动消耗卡路里排行榜”,例似微信步数排名,显示排名前20人的信息和消耗的卡里路,怎样实现排序?

    一般思路:存储信息,然后数据库查询,排序?(假如有几十万人参与排名,这样查mysql,性能很差,很慢)

    正确的打开方法:用redis zset。性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

    ---------------- 下面进入正文 ---------------- 

    1.什么是zset?

      zset是redis的有序集合。

          zset是在set基础上,每个member关联一个score值(作为排序的参照)。

    2.基本操作:

      zadd key score member   添加分数、成员到键。------ 举个栗子:zadd rank 1000 Tom  汤姆的分数是1000分,把这个信息添加(或更新Tom的分数)到redis的rank键下。

      zrem key member  移除某个成员。---------------- 举个栗子:zrem  rank Tom 从排行榜中移除掉汤姆这个人

      zcard key  返回有序集合key的成员数 -------------- 举个栗子:zcard rank 看看排行榜有多少人

      zscore key member  返回成员的分数 -------------- 举个栗子:zscore rank Tom  看看汤姆多少分

      zrevrange key start stop  返回范围内成员 ----------- 举个栗子:zrevrange rank 0 9  返回分数最高的前十名

          zrank key start stop  返回范围内成员 -------------- 举个栗子:zrank rank 0 9  返回分数最低的前十名

    3.实现一个考试成绩排行榜:

      ① 用户进行一些操作(比如登录,比如调用某个接口时),更新zset。 ------你可以封装一个zadd方法,更新用户分数(考试分数)

          ② 用户查看排行榜时,从zset直接获取排名信息。   --------------------你可以封装一个zrevrange方法。

  • 相关阅读:
    有关获取session属性时报nullPointException(空指针异常)的解决方案
    常用的正则表达式集锦
    使用java实现持续移动的小球
    Java基础系列--包装类
    java中关于类的封装与继承,this、super关键字的使用
    简单了解static
    【01】npm/cnpm安装
    【转】Nodejs学习笔记(二)--- 模块
    【转】Nodejs学习笔记(一)--- 简介及安装Node.js开发环境
    【转】axios的基本使用
  • 原文地址:https://www.cnblogs.com/yuzhaoblog/p/8275017.html
Copyright © 2011-2022 走看看