redis缓存数据库-set集合操作
redis的集合允许用户将任意多个各个不相同的元素存储到集合里面,这些元素既可以是文本数据,也可以是二进制数据。与列表相比,集合有以下两个明显的区别。
- 列表可以存储重复元素,而集合只会存储非重复元素
- 列表以有序方式存储元素,而集合则以无序的方式存储
这两种的差异还与其特性带来的复杂度有关: - 列表中Linset 和LREM这样的命令在使用过程中,即使命令针对单个列表,程序也会遍历整个表,复杂度都为O(N)
- 对于集合来说,本身为无序,所有针对单个元素的集合命令都不需要遍历整个表,复杂度为O(1)
name对应的集合中添加元素
sadd(name,values)
获取name对应的集合中元素个数
scard(name)
在第一个name对应的集合中且不在其他name对应的集合的元素集合(求不同)
sdiff(keys, *args)
获取第一个name对应的集合中且不在其他name对应的集合,再将其新加入到dest对应的集合中
sdiffstore(dest, keys, *args)
获取多一个name对应集合的交集(求相同)
sinter(keys, *args)
获取多一个name对应集合的并集,再讲其加入到dest对应的集合中
sinterstore(dest, keys, *args)
检查value是否是name对应的集合的成员
sismember(name, value)
获取name对应的集合的所有成员
smembers(name)
将某个成员从一个集合中移动到另外一个集合
smove(src, dst, value)
从集合的右侧(尾部)移除一个成员,并将其返回
spop(name)
从name对应的集合中随机获取 numbers 个元素
srandmember(name, numbers)
在name对应的集合中删除某些值
srem(name, values)
获取多一个name对应的集合的并集
sunion(keys, *args)
获取多一个name对应的集合的并集,并将结果保存到dest对应的集合中
sunionstore(dest,keys, *args)
同字符串的操作,用于增量迭代分批获取元素,避免内存消耗太大
sscan(name, cursor=0, match=None, count=None)
sscan_iter(name,match=None, count=None)