1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
| import random
import redis
redis_config = {
'host': 'redis-testing',
'port': 6379,
'db': 1,
}
rs = redis.Redis(**redis_config)
if __name__ == '__main__':
# ZADD
# 设置一个或多个带分数的值
# 返回设置成功的个数
# 若值已存在,则更新其分数
print(rs.zadd('heights', {'King': 146, 'Jimmy': 160, 'Ann': 155})) # 3
# 更新分数不计入设置成功的个数
print(rs.zadd('heights', {'Jimmy': 165})) # 0
# ZSCORE
# 获取值的分数
print(rs.zscore('heights', 'King')) # 146.0
# ZRANGE
# 取指定索引区间上的值
print(rs.zrange('heights', 1, 2)) # [b'Ann', b'Jimmy']
# ZRANGEBYSCORE
# 取分数符合区间内的元素
print(rs.zrangebyscore('heights', 140, 159)) # [b'King', b'Ann']
# 第 3 个参数指定开始查找的索引
# 第 4 个参数指定返回值的个数
# withscores 为 True 时,返回值要带上分数
print(rs.zrangebyscore('heights', 140, 159, 1, 1, withscores=True)) # [(b'Ann', 155.0)]
# ZINCRBY
# 增加某个值的分数
# 返回更新后的分数
print(rs.zincrby('heights', 5, 'Ann')) # 160.0
# ZCARD
# 返回集合中元素的个数
print(rs.zcard('heights')) # 3
# ZCOUNT
# 返回指定分数区间上值的个数
print(rs.zcount('heights', 155, 170)) # 2
# ZREM
# 删除一个或多个元素
# 返回删除成功的个数
print(rs.zrem('heights', 'Jimmy', 'Ann')) # 2
# ZREMRANGEBYRANK
# 删除指定区间上的元素
# 返回成功删除的个数
rs.zadd('floats', {'0.1': 0.1, '0.2': 0.2, '0.3': 0.3})
print(rs.zremrangebyrank('floats', 0, 1)) # 2
print(rs.zrange('floats', 0, rs.zcard('floats'))) # [b'0.3']
# ZREMRANGEBYSCORE
# 删除符合指定分数区间的元素
# 返回成功删除的个数
rand_values = {}
s = 'abcdefg'
for v in range(len(s)):
rand_values[s[v]] = random.random()
rs.zadd('rand_values', rand_values)
print(rs.zrange('rand_values', 0, len(s),
withscores=True)) # [(b'd', 0.200721567466151), (b'f', 0.3296169544640849), (b'c', 0.3677595274693486), (b'b', 0.512665164306821), (b'g', 0.5353782879780641), (b'a', 0.7277933908083912), (b'e', 0.942418290434278)]
print(rs.zremrangebyscore('rand_values', 0.3, 0.4)) # 2
print(rs.zcard('rand_values')) # 5
# ZRANK
# 获取元素在集合中的位置
print(rs.zrank('rand_values', 'a')) # 3
# ZREVRANK
# 获取元素在降序集合中的位置
print(rs.zrevrank('rand_values', 'a')) # 1
|