redis ZSet实现排行榜功能
一.写在前面
- 最近做完直播的基础功能后,又多了很多相关的需求,其中有一个就是直播间分享榜单的功能,顾名思义就是:分享本直播间并成功拉用户进来的数量做一个排行。比如我分享了这个直播间,别人通过我分享的直播间链接点进来,那么这个人就是我邀请来的,我总共邀请了10个人,你总共邀请了6个人,他总共邀请了11个人。实时排名就是他>我>你。
- 简单介绍了一下功能,其实就是个根据某个权重值做排行榜的功能。
二.介绍redis的zset
- Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
- 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
- 有序集合的成员是唯一的,但分数(score)却可以重复。
(这么专业的话我肯定是说不出来的,当然是网上找的啦)
命令 | 描述 |
---|---|
ZADD key score1 member1 [score2 member2] | 向有序集合添加一个或多个成员,或者更新已存在成员的分数 |
ZCARD key | 获取有序集合的成员数 |
ZCOUNT key min max | 计算在有序集合中指定区间分数的成员数 |
ZINCRBY key increment member | 有序集合中对指定成员的分数加上增量 increment |
ZINTERSTORE destination numkeys key [key …] | 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中 |
ZLEXCOUNT key min max | 在有序集合中计算指定字典区间内成员数量 |
ZRANGE key start stop [WITHSCORES] | 通过索引区间返回有序集合成指定区间内的成员 |
ZRANGEBYLEX key min max [LIMIT offset count] | 通过字典区间返回有序集合的成员 |
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] | 通过分数返回有序集合指定区间内的成员 |
ZRANK key member | 返回有序集合中指定成员的索引 |
ZREM key member [member …] | 移除有序集合中的一个或多个成员 |
ZREMRANGEBYLEX key min max | 移除有序集合中给定的字典区间的所有成员 |
ZREMRANGEBYRANK key start stop | 移除有序集合中给定的排名区间的所有成员 |
ZREMRANGEBYSCORE key min max | 移除有序集合中给定的分数区间的所有成员 |
ZREVRANGE key start stop [WITHSCORES] | 返回有序集中指定区间内的成员,通过索引,分数从高到底 |
ZREVRANGEBYSCORE key max min [WITHSCORES] | 返回有序集中指定分数区间内的成员,分数从高到低排序 |
ZREVRANK key member | 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序 |
ZSCORE key member | 返回有序集中,成员的分数值 |
ZUNIONSTORE destination numkeys key [key …] | 计算给定的一个或多个有序集的并集,并存储在新的 key 中 |
ZSCAN key cursor [MATCH pattern] [COUNT count] | 迭代有序集合中的元素(包括元素成员和元素分值) |
上面就是redis的zset相关的命令,项目中实际是不会这么写的,我们使用的RedisTemplate进行的redis操作
三.实现方式
介绍完zset,然后说一下功能实现思路,其实很简单。。。。。就是往zset里面塞数据
stringRedisTemplate.opsForZSet().incrementScore(key, member, incrementScore);
stringRedisTemplate.opsForZSet().reverseRangeWithScores(key, start, end);
stringRedisTemplate.opsForZSet().reverseRangeWithScores("key", 0, 9);
https://blog.csdn.net/qq_34203492/article/details/98202848
redis ZSet实现排行榜功能相关推荐
- Redis实现世界杯排行榜功能(实战)
点击上方"后端技术精选",选择"置顶公众号" 技术文章第一时间送达! 作者:俊俊的小熊饼干 cnblogs.com/wenjunwei/p/9754346.ht ...
- 使用Redis的有序集合Zset实现排行榜功能
游戏中存在各种各样的排行榜,比如玩家的等级排名.分数排名等.玩家在排行榜中的名次是其实力的象征,位于榜单前列的玩家在虚拟世界中拥有无尚荣耀,所以名次也就成了核心玩家的追求目标. 一个典型的游戏排行榜包 ...
- 使用Redis Zset实现排行榜
Zset简易排行 一.ZSet添加数据的命令 二.用到的命令 三.缓存击穿 提示:以下是本篇文章正文内容,下面案例可供参考 一.ZSet添加数据的命令 key:String类型 score:数值类型 ...
- 通过redis实现游戏排行榜功能
需求说明 水晶数量排行榜 英雄熟练度排版 只排前一万名,玩家只能看到前200名的数据和自己的名次 每个排行榜实时刷新,玩家可以延迟5分钟查看榜单数据,但是自己的名次需要尽可能实时查看 分值一样,则先达 ...
- java基于Redis实现排行榜功能-附源码
java基于Redis Zset实现排行榜功能 前言 做之前要思考的问题? Zset怎么存储需要的多个字段? 话不多说先上效果图 数据存储格式 代码 源码下载 闲暇之余,整理了一下之前利用Redis ...
- php redis 搜索,PHP+Redis有序集合(zset)实现博客园阅读排行榜功能
许多网站都有排行榜的功能,比如球员人气榜单.阅读排行榜,对于一些小网站,通过查数据库就能实现排行榜的功能,但是对于稍微有点用户量而且还是实时排名的网站,使用一些关系型数据库如(MySQL.Oracle ...
- Redis ZSet数据结构实现排行榜功能
Redis ZSet数据结构实现排行榜功能 一. 使用场景 公司新项目要求, 实现每日排行榜以及各省排行榜 二. 功能实现(Java) 1. 排行榜数据插入及更新 /*** @date: 2022/1 ...
- 使用redis实现排行榜功能
一.需求背景 最近项目需要做排行榜功能,实现员工邀请用户注册排行榜,要求是实时更新,查询要快.员工所属支行.二级行.省行,界面要根据条件显示排名数据.效果如下图所示: 原型图展示比较随意,用excel ...
- 使用 Redis 实现语音社交聊天室源码中的排行榜功能
在语音社交聊天室源码中,排行榜功能是一个很普遍的需求.使用 Redis 中有序集合的特性来实现排行榜是又好又快的选择. 一般语音社交聊天室源码的排行榜都是有实效性的,比如"用户积分榜&quo ...
最新文章
- 小米大数据:借助Apache Kylin打造高效、易用的一站式OLAP解决方案
- 英语语法---前言及索引
- python:collections模块
- php static method,php 类方法用static::hello(); 等同于 $this-hello();吗?
- 前端学习(2824):数据绑定前的代码编辑器技巧
- 八皇后问题和八数码问题的最陡上升爬山法、首选爬山法、随机重启爬山法、模拟退火算法的分析和实现
- Atitit uke消防防火规范 attilax总结
- 《穿越计算机的迷雾》读书笔记九
- 如何将NCM转换成MP3 - NCM转MP3转换软件
- CWDM SFP彩光模块知识百科
- NYOJ54 小明的存钱计划
- Deferred异步操作
- java多页码分页_对页码进行分页
- 从校园到职场,别让父母限制了你的天花板
- FTP协议(指令集)
- JavaCV - 图像锐化
- transE论文阅读 19年记录的
- GD32103系列 电机驱动项目总结
- 兽医提醒:狗狗生病的9个征兆,建议铲屎官收藏,以备不时之需!
- TMC4671-LA完全集成伺服控制器电机驱动芯片带FOC控制