无名 发表于 2022-5-8 18:32:42

【HC】python操作zset


一、任务添加数据到有序集合修改有序集合的评分基于评分排序基于位置排序基于成员查询排名和评分http://cdn.u1.huluxia.com/g3/M01/7D/C3/wKgBOV3xnGCAMVVKAAFAIevZ-vc633.jpg
二、实现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)http://cdn.u1.huluxia.com/g3/M01/7D/C3/wKgBOV3xnGCAC8NaAAEMAAIxayw252.jpg
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.decode(), one)http://cdn.u1.huluxia.com/g3/M01/7D/C3/wKgBOV3xnGGAVhr_AAA4AGW2qAc271.jpg
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.decode(), one)http://cdn.u1.huluxia.com/g3/M01/7D/C3/wKgBOV3xnGGAVvwDAAA0AJ0mBZo806.jpg
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}")http://cdn.u1.huluxia.com/g3/M01/7D/C3/wKgBOV3xnGGAU780AAA0AOqB3S4018.jpg
5、其他常用方法查询集合里有多少个成员:client.zcard('集合名')1查询评分范围内有多个成员:client.zcount('集合名', 评分下限, 评分上限)1
页: [1]
查看完整版本: 【HC】python操作zset