redis实现排行榜功能


Posted in Redis onMay 24, 2021

redis的zset可以很方便地用来实现排行榜功能,下面简单介绍python如何使用redis实现排行榜功能

加入排行榜

获取redis实例

import redis
main_rds = redis.StrictRedis(host='localhost',port=6379,db=0,password='')

全量加入排行榜

注意根据redis包的版本不同,zadd和zincby的传参方式也不同

对于redis 3.0(python的redis包)以下的版本

# 向key为name的zset里面添加一个member,其分数为score,如果已经存在就覆盖
main_rds.zadd(name,score,member)

示例

main_rds.zadd("test",100,"a")

对于redis 3.0(python的redis包)及以上的版本

# 向key为name的zset里面添加一个member,其分数为score,如果已经存在就覆盖
main_rds.zadd(name,{member:score})

示例

main_rds.zadd("test",{"b":90,"c":80}) # 可以一次加入多个

增量加入排行榜

对于redis 3.0(python的redis包)以下的版本

# # 向key为name的zset里面添加一个member,其分数为score,如果已经存在就增量添加
main_rds.zincrby(name,member,amount)

示例

main_rds.zincrby("test","love",10)  # 10.0,一次只能加入一个
main_rds.zincrby("test","love",-1)  # 9.0

对于redis 3.0(python的redis包)及以上的版本

# 向key为name的zset里面添加一个member,其增量分数为score,如果不存在就添加
main_rds.zincrby(name,amount,member)

示例

main_rds.zincrby("test",8,"beauty")  # 8.0
main_rds.zincrby("test",-2,"beauty")  # 6.0

操作排行榜

获取某个member的排名

# 获取某个member的排名,按score从小到大排名,从0开始
main_rds.zrank(name,member)
# 获取某个member的排名,按score从大到小排名,从0开始
main_rds.zrevrank(name,meber)

示例

main_rds.zadd("test",{"a":1,"b":2,"c":3})
main_rds.zrank("test","a") # 0
main_rds.zrevrank("test","a") # 2

获取某个meber的score

main_rds.zscore(key,member)

示例

main_rds.zscore("test","c")  # 3.0

获取排名在某个区间的元素

# 返回key为name的zset(按score从大到小排序)中的index从start到end(顾头也顾尾)的所有元素
main.zrevrange(name, start, end, withscores=False)

示例

main_rds.zadd("test",{"d":5.1,"e":6,"f":7})  # 3
# 顾头也顾尾
main_rds.zrevrange("test",0,3)  # ['f', 'e', 'd', 'c']

获取score在某个区间的元素

# 返回key为name的zset中score(从小到大)在给定区间(顾头也顾尾)的元素
main_rds.zrangebyscore(name, min, max, start=None, num=None, withscores=False)

示例

# 顾头也顾尾
main_rds.zrangebyscore("test",2,6)  # ['b', 'c', 'd', 'e']

获取score在给定区间的元素数量

# 返回key为name的zset中score在给定区间的数量
main_rds.zcount(name, min, max)

示例

main_rds.zcount("test",2,6)  # 4L

获取整个zset的元素个数

main_rds.zcard(name)

示例

main_rds.zcard("test") # 6

删除某个元素

# 删除key为name里面的元素
main_rds.zrem(name, *values)

示例

main_rds.zrevrange("test",0,10)   # ['love', 'f', 'beauty']
main_rds.zrem("test","f")    # 1
main_rds.zrem("test","love","beauty") # 2

删除排名在某个区间的元素

# 删除key为name的zset中排名在给定区间的元素
main_rds.zremrangebyrank(name, min, max)

示例

main_rds.zremrangebyrank("test",0,2) # 3

#### 删除score在某个区间的元素
# 删除key为name的zset中score在给定区间的元素
main_rds.zremrangebyscore(name, min, max)

示例

main_rds.zremrangebyscore("test", 5, 6)  # 2

到此这篇关于redis实现排行榜功能的文章就介绍到这了,更多相关redis 排行榜内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Redis 相关文章推荐
redis配置文件中常用配置详解
Apr 14 Redis
Redis持久化与主从复制的实践
Apr 27 Redis
springboot使用Redis作缓存使用入门教程
Jul 25 Redis
Redis Cluster 集群搭建你会吗
Aug 04 Redis
详解redis在微服务领域的贡献
Oct 16 Redis
Redis命令处理过程源码解析
Feb 12 Redis
使用Redis实现点赞取消点赞的详细代码
Mar 20 Redis
Redis安装使用RedisJSON模块的方法
Mar 23 Redis
Redis 报错 error:NOAUTH Authentication required
May 15 Redis
基于Redission的分布式锁实战
Aug 14 Redis
python中使用redis用法详解
Dec 24 Redis
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
May 21 #Redis
Redis 配置文件重要属性的具体使用
May 20 #Redis
浅谈redis缓存在项目中的使用
May 20 #Redis
详解Redis主从复制实践
详解redis分布式锁的这些坑
为Java项目添加Redis缓存的方法
redis内存空间效率问题的深入探究
You might like
php权重计算方法代码分享
2014/01/09 PHP
php中使用gd库实现下载网页中所有图片
2015/05/12 PHP
PHP编写简单的App接口
2016/08/28 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
Javascript开发包大全整理
2006/12/22 Javascript
Dom 结点创建 基础知识
2011/10/01 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
JavaScript实现的双向跨域插件分享
2015/01/31 Javascript
JS如何判断json是否为空
2016/07/06 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
令按钮悬浮在(手机)页面底部的实现方法
2017/05/02 Javascript
JavaScript多态与封装实例分析
2018/07/27 Javascript
Node.js Stream ondata触发时机与顺序的探索
2019/03/08 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
2019/09/14 Javascript
简介JavaScript错误处理机制
2020/08/04 Javascript
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
netbeans7安装python插件的方法图解
2013/12/24 Python
python时间整形转标准格式的示例分享
2014/02/14 Python
对命令行模式与python交互模式介绍
2018/05/12 Python
如何用C代码给Python写扩展库(Cython)
2019/05/17 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
Python 3 使用Pillow生成漂亮的分形树图片
2019/12/24 Python
使用sklearn的cross_val_score进行交叉验证实例
2020/02/28 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
印度服装购物网站:Limeroad
2018/09/26 全球购物
宣传普通话标语
2014/06/27 职场文书
销售顾问工作计划书
2014/09/15 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书
2015年乡镇科普工作总结
2015/05/13 职场文书
有关朝花夕拾的读书笔记
2015/06/29 职场文书