四、有序集合 sorted sets
命令描述
Redis Zadd 命令向有序集合添加一个或多个成员,或者更新已存在成员的分数
Redis Zcard 命令获取有序集合的成员数
Redis Zcount 命令计算在有序集合中指定区间分数的成员数
Redis Zincrby 命令有序集合中对指定成员的分数加上增量 increment
Redis Zinterstore 命令计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
Redis Zlexcount 命令在有序集合中计算指定字典区间内成员数量
Redis Zrange 命令通过索引区间返回有序集合成指定区间内的成员
Redis Zrangebylex 命令通过字典区间返回有序集合的成员
Redis Zrangebyscore 命令通过分数返回有序集合指定区间内的成员
Redis Zrank 命令返回有序集合中指定成员的索引
Redis Zrem 命令移除有序集合中的一个或多个成员
Redis Zremrangebylex 命令移除有序集合中给定的字典区间的所有成员
Redis Zremrangebyrank 命令移除有序集合中给定的排名区间的所有成员
Redis Zremrangebyscore 命令移除有序集合中给定的分数区间的所有成员
Redis Zrevrange 命令返回有序集中指定区间内的成员,通过索引,分数从高到底
Redis Zrevrangebyscore 命令返回有序集中指定分数区间内的成员,分数从高到低排序
Redis Zrevrank 命令返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
Redis Zscore 命令返回有序集中,成员的分数值
Redis Zunionstore 命令计算给定的一个或多个有序集的并集,并存储在新的 key 中
Redis Zscan 命令迭代有序集合中的元素(包括元素成员和元素分值)
示例代码如下:
#!/usr/bin/python
# -*- coding:utf-8 -*-
# __author__ = 'Jack'
pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
r = redis.Redis(connection_pool=pool)
r.flushall() # 清空Redis
r.zadd('z1', '11', 1, '22', 2, '33', 3, '44', 4, '55', 5, '66', 6, '66', 7) # 在name对应的有序集合中添加元素
print(r.zcard('z1')) # 获取name对应的有序集合元素的数量
print(r.zcount('z1', 1, 2)) # 获取name对应的有序集合中分数 在 [min,max] 之间的个数
r.zincrby('z1', '11', amount=5) # 自增name对应的有序集合的 name 对应的分数
print(r.zrange('z1', 0, -1, desc=False, withscores=True)) # 值11被排序到最后;此处表示按元素的值升序排列
print(r.zrank('z1', 33)) # 获取某个值在 name对应的有序集合中的排行(从 0 开始)
r.zrem('z1', '66') # 删除name对应的有序集合中值是values的成员
print(r.zrange('z1', 0, -1, desc=False, withscores=True))
r.zremrangebyrank('z1', 0, 1) # 根据排行范围删除
print(r.zrange('z1', 0, -1, desc=False, withscores=True))
r.zremrangebyscore('z1', 4.5, 5.5) # 根据分数范围删除
print(r.zrange('z1', 0, -1, desc=False, withscores=True))
print(r.zscore('z1', 11)) # 获取name对应有序集合中 value 对应的分数
r.zadd("zset_name", "a1", 6, "a2", 2, "a3", 5)
r.zadd('zset_name1', a1=7, b1=10, b2=5)
'''
获取两个有序集合的交集并放入dest集合,如果遇到相同值不同分数,则按照aggregate进行操作
aggregate的值为: SUM MIN MAX
'''
r.zinterstore('zset_name2', ('zset_name', 'zset_name1'), aggregate='Sum')
print(r.zrange('zset_name2', 0, -1, desc=False, withscores=True))
输出结果如下:
6
2
[(b'22', 2.0), (b'33', 3.0), (b'44', 4.0), (b'55', 5.0), (b'11', 6.0), (b'66', 6.0)]
1
[(b'22', 2.0), (b'33', 3.0), (b'44', 4.0), (b'55', 5.0), (b'11', 6.0)]
[(b'44', 4.0), (b'55', 5.0), (b'11', 6.0)]
[(b'44', 4.0), (b'11', 6.0)]
6.0
[(b'a1', 13.0)]