需求:假如现在需要搞个 “运动消耗卡路里排行榜”,例似微信步数排名,显示排名前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方法。

最新文章

  1. mysql索引失效
  2. U盘操作系统,Kali Linux操作系统安装
  3. Spark小课堂Week3 FirstSparkApp(RDD开发)
  4. Javascript 层次
  5. java基础知识再学习--HashMap与ConcurrentHashMap的区别
  6. 使用VS Code开发调试.NET Core 2.0
  7. Ajax跨域 CROS处理
  8. jQuery 遍历函数(八)
  9. (二叉树 BFS) leetcode993. Cousins in Binary Tree
  10. gradle安装操作
  11. Linux下刷新DNS缓存(Ubuntu/CentOS)
  12. Real Time Credit Card Fraud Detection with Apache Spark and Event Streaming
  13. web-day9
  14. 《MySQL Workbench数据建模与开发》
  15. Yii2 中cookie的用法(2)
  16. 如何在eclipse中使用mvn clean install
  17. WebXml.com.cn 中国股票行情数据 WEB 服务(支持深圳和上海股市的全部基金、债券和股票),数据即时更新
  18. lua元表(metatable)和元方法(metamethod)
  19. 安装完DevExpress14.2.5,如何破解它呢?
  20. 【linux】重置fedora root密码

热门文章

  1. 【easyui】treegrid逐级加载源码
  2. [P5665][CSP2019D2T2] 划分
  3. python list comprehensions
  4. gulp常用插件之gulp-plumber使用
  5. gulp常用插件之http-proxy-middleware使用
  6. git项目分支管理
  7. VSCode部署JAVA项目出现The type java.lang.Object cannot be resolved
  8. Python-Django学习笔记(四)-views的编写以及urls分发器的配置
  9. C语言 小技巧函数方法总结
  10. Unable to open debugger port (127.0.0.1:13249): java.net.BindException "Address already in use: JVM_Bind"