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 相关文章推荐
在K8s上部署Redis集群的方法步骤
Apr 27 Redis
Redis实现订单自动过期功能的示例代码
May 08 Redis
redis哨兵常用命令和监控示例详解
May 27 Redis
Redis分布式锁Redlock的实现
Aug 07 Redis
使用redis生成唯一编号及原理示例详解
Sep 15 Redis
Redis三种集群模式详解
Oct 05 Redis
在Centos 8.0中安装Redis服务器的教程详解
Mar 21 Redis
Redis安装使用RedisJSON模块的方法
Mar 23 Redis
Redis如何使用乐观锁(CAS)保证数据一致性
Mar 25 Redis
一文搞懂Redis中String数据类型
Apr 03 Redis
浅谈Redis缓冲区机制
Jun 05 Redis
Redis配置外网可访问(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输出Excel文件类
2010/02/08 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
PHP文件操作实例总结
2016/09/27 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
2019/10/12 PHP
JS解析XML的实现代码
2009/11/12 Javascript
JavaScript 学习笔记二 字符串拼接
2010/03/28 Javascript
上传的js验证(图片/文件的扩展名)
2013/04/25 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
2015/01/09 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
模拟javascript中的sort排序(简单实例)
2016/08/17 Javascript
canvas知识总结
2017/01/25 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
JS实现按钮控制计时开始和停止功能
2017/07/27 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
使用Python进行稳定可靠的文件操作详解
2013/12/31 Python
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
Python中文竖排显示的方法
2015/07/28 Python
使用pygame模块编写贪吃蛇的实例讲解
2018/02/05 Python
python获取微信企业号打卡数据并生成windows计划任务
2019/04/30 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
大学生就业自荐信
2013/10/26 职场文书
海飞丝广告词
2014/03/20 职场文书
市场营销工作计划书
2014/05/06 职场文书
学校运动会霸气口号
2014/06/07 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
Memcached介绍及php-memcache扩展安装
2021/04/01 PHP