集合Set
redis集合Set的概念和python的集合概念一致。集合是去重的不重复,无序的。
#1 sadd(name, values)
name对应的集合中添加元素
如 r.sadd('num1', 1,2,3,4,5) # num1 = {b'4', b'1', b'2',b'3', b'5'} 无序的
#2 scard(name)
获取name对应的集合中元素个数
#3 sunion(keys, *args)
获取多一个name对应的集合的并集
如
num3 = r.sunion('num1', 'num2') # 并集
#4 sinter(keys, *args)
获取多一个name对应集合的交集
#5 sdiff(keys, *args)
在第一个name对应的集合中且不在其他name对应的集合的元素集合, 差集
#6 sismember(name, value)
检查value是否是name对应的集合的成员, 返回布尔值
#7 smembers(name)
获取name对应的集合的所有成员
如
r.smenmers('num1') # {b'1', b'2', b'4', b'5', b'3'}
#8 spop(name)
从集合中随机移除一个成员,并将其返回
#9 srandmember(name, numbers)
从name对应的集合中随机获取 numbers 个元素
如
r.srandmember('num1', 3) # 随机返回三个元素 [b'3', b'5', b'2']
#10 srem(name, values)
在name对应的集合中删除某些值
如
r.srem('num1', 1, 2) # 删除元素1和2
#11 sscan_iter(name, match=None, count=None)
同字符串的操作,用于增量迭代分批获取元素,避免内存消耗太大
有序集合Zset
有序集合,在集合的基础上,为每个元素排序;
元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值,即:值和分数,分数专门用来做排序。
#1 zadd(name, *args, **kwargs)
在name对应的有序集合中添加元素
如:
print(r.zadd("zz", {"n1":1,"n2":2,"n3":3,"n4":4}))
#2 zcard(name)
获取name对应的有序集合元素的数量
#3 zcount(name, min, max)
获取name对应的有序集合中,分数在[min,max]之间的元素的个数
#4 zincrby(name, value, amount)
自增name对应的有序集合的 name 对应的分数
如
r.zincrby('znum1', 20, 'n3') # 'n3' = 22
#5 zrange( name, start, end, desc=False, withscores=False, score_cast_func=float)
按照索引范围获取name对应的有序集合的元素
参数:
name redis的name
start 有序集合索引起始位置
end 有序集合索引结束位置
desc 排序规则,默认按照分数从小到大排序
withscores 是否获取元素的分数,默认只获取元素的值
score_cast_func 对分数进行数据转换的函数
如
aa=r.zrange("znum1",0,1,desc=False,withscores=True,score_cast_func=int)
print(aa) # [(b'n1', 1), (b'n2', 4)]
#6 zscore(name, value)
获取name对应有序集合中,value对应的分数
#7 zrank(name, value)
获取某个值在name对应的有序集合中的排行(从0开始)
# 更多:zrevrank(name, value),从大到小排序
#8 zrem(name, values)
删除name对应的有序集合中值是values的成员
如:
zrem('zz', ['s1', 's2'])
#9 zremrangebyrank(name, min, max)
根据排行范围删除,即 '索引值'删除
#10 zremrangebyscore(name, min, max)
根据分数范围删除
#11 zinterstore(dest, keys, aggregate=None)
获取两个有序集合的交集,如果遇到相同值不同分数,则按照aggregate进行操作
参数
dest 生成的交集
keys 元组,如 ('znum1', 'znum2')
aggregate的值为: SUM MIN MAX
如:
r.zinterstore('znum3', ('znum1', 'znum2'), aggregate='sum')
#12 zunionstore(dest, keys, aggregate=None)
获取两个有序集合的并集,如果遇到相同值不同分数,则按照aggregate进行操作
# aggregate的值为: SUM MIN MAX