Benjamin

静以修身,俭以养德,非澹薄无以明志,非宁静无以致远。
随笔 - 397, 文章 - 0, 评论 - 196, 引用 - 0
数据加载中……

python+redis排行榜相关

redis的zset可以很方便地用来实现排行榜功能,下面介绍python如何使用redis实现排行榜功能
1、加入排行榜:向key为name的zset里面添加一个member,其分数为score,如果已经存在就覆盖
zadd(name,mapping) #name是榜单名,mapping字典(value是积分,key是排序字段值,注意这里的key和value都是值,key可以是整数)
例如:要对玩家信息id是5,积分是521,要将这个玩家加入到榜单,传入的mapping是{5:521},在redis中存储的value(字段)值是5,score(字段)值是521
2、更新榜单:
   zincrby(name,amount,value) #增量更新,name榜单名,amount是具体增减值,可以是负数,value的含义见1解释; zadd也可实现榜单更新 3、获取排名: zrank(name,value) #name是榜单名,value含义见1 按score从小到大排名,从0开始
   zrevrank(name,value) #按score从大到小排名,从0开始
   zscan(name, cursor=0, match=None, count=None,score_cast_func=float)  #获得name下榜单数据,返回值是元组,第二个元素是list(榜单数据)
4、获取积分
    zscore(name, value)#name是榜单名,value是元素详见1
4、获取某个区间(排名)榜单数据 zrange(name, start, end, desc=False,withscores=False,score_cast_func=float) name 榜单
   start 有序集合索引起始位置
   end 有序集合索引结束位置
   desc 排序规则,默认按照分数从小到大排序 withscores 是否获取元素的分数,默认只获取元素的值
   score_cast_func 对分数进行数据转换的函数
   返回值:tupe(元组:元素不能修改,第一个元素是bytes,需要转码encoding='utf-8',第二个元素是积分)数组
   如果我们获取第六名的榜单数据,start和end都是5即可,注意索引是从0开始的
  
    zrevrange和zrange参数一致,但是返回的是bytes的list(榜单中的value)
5、获取某范围内积分的榜单
zrangebyscore参数同zrevrange,返回也和zrevrange一样
6、数量相关
   zcard(name) #获取榜单数量 name榜单名    zcount(name, min, max) #获取min和max间榜单数量 min max是积分
7、删除元素
  zrem(name, *values) #删除某个元素   zremrangebyrank(name, min, max) #批量删除min到max区间内元素
简单示例

posted on 2021-11-17 14:13 Benjamin 阅读(314) 评论(0)  编辑 收藏 引用 所属分类: python


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理