首页 > 编程源码 > python操作zset

python操作zset

楼主:小亚 [3级] · 2019-12-12 ·  浏览719 · 编程源码 · ID:

一、任务添加数据到有序集合修改有序集合的评分基于评分排序基于位置排序基于成员查询排名和评分

二、实现1、添加数据client.zadd('集合名', {值1:评分1, 值2:评分2, ...})1import redisclient = redis.Redis()name1 = '张三'name2 = '李四'client.zadd('age_demo', {name1:18, name2:16})2、修改评分client.zincrby('集合名', 增加值, 成员名) 1import redisclient = redis.Redis()name1 = '张三'name2 = '李四'client.zincrby('age_demo', 80, name2)client.zincrby('age_demo', 100, name1)

3、基于评分排序# 从小到大排client.zrangebyscore('集合名', 评分下限, 评分上限)# 从大到小排client.zrevrangebyscore('集合名', 评分上限,评分下限)1234可选参数:start:起始位置withscores:为True时返回元组(成员,评分), 为False时(默认)返回成员列表num:返回列表的长度import redisclient = redis.Redis()rank = client.zrangebyscore('age_demo', 0, 200, withscores=True)for one in rank: print(one[0].decode(), one[1])

4、基于位置排序这里的位置是指按评分从小到大排序后的位置。client.zrange("集合名", 位置下限, 位置上限)client.zrevrange("集合名", 位置上限, 位置下限)12同样的,这里的位置可以填写负数,表示从后往前数。可选参数: withscoresimport redisclient = redis.Redis()rank = client.zrange('age_demo', 0, 1, withscores=True)for one in rank: print(one[0].decode(), one[1])

4、基于成员的查询1)查询排名client.zrank('集合名','成员名')1存在则返回排名(从0开始),不存在返回Noneimport redisclient = redis.Redis()name = '张三'rank = client.zrank('age_demo',name)print(f"{name}的排名是{rank+1}")123452)查询评分clieny.zscore('集合名', '成员名')1import redisclient = redis.Redis()name = '张三'score = client.zscore('age_demo',name)print(f"{name}的评分是{score}")

5、其他常用方法查询集合里有多少个成员:client.zcard('集合名')1查询评分范围内有多个成员:client.zcount('集合名', 评分下限, 评分上限)1

- 版权声明 - 1、本帖所有言论和图片等纯属网友个人意见,与流星社区立场无关;
2、其他单位或个人使用、转载或引用本帖时必须同时征得该帖子作者小亚流星社区的同意;
3、备注原文地址:https://bbs.liuxingw.com/t/19599.html,可忽略第2条;
4、帖子作者需承担一切因本文发表而直接或间接导致的相关责任;
5、如本帖内容或部分内容转载自其它媒体,这并不代表本站赞同其观点和对其真实性负责;
6、如本帖若为资源类,将仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您安装或使用的设备中彻底删除上述内容;
7、如果您喜欢该程序,请支持正版软件,购买注册,可以得到更好的正版服务;
8、如本帖侵犯到任何版权或违法问题,请立即邮件告知我们,我们将及时予以处理。
0条回复 |  最后回复于2019-12-12
登录注册 后才可进行评论
签到
16人签到
已签0天
  • 46634帖子
  • 1936793热点量
  • 184968火热值