一:Redis 集合(Set)
Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
二:set常用操作
1)sadd(name,values) name对应的集合中添加元素
2)scard(name) 获取name对应的集合中元素个数
3)sdiff(keys, *args) 在第一个name对应的集合中且不在其他name对应的集合的元素集合
4)sdiffstore(dest, keys, *args) 获取第一个name对应的集合中且不在其他name对应的集合,再将其新加入到dest对应的集合中
5)sinter(keys, *args) 获取多一个name对应集合的交集
6)sinterstore(dest, keys, *args) 获取多一个name对应集合的并集,再讲其加入到dest对应的集合中
7)sismember(name, value) 检查value是否是name对应的集合的成员
8)smembers(name) 获取name对应的集合的所有成员
9)smove(src, dst, value) 将某个成员从一个集合中移动到另外一个集合
10)spop(name) 从集合的左侧(头部)移除一个成员,并将其返回
11)srandmember(name, numbers) 从name对应的集合中随机获取 numbers 个元素
12)srem(name, values) 在name对应的集合中删除某些值
13)sunion(keys, *args) 获取多一个name对应的集合的并集
14)sunionstore(dest,keys, *args) 获取多一个name对应的集合的并集,并将结果保存到dest对应的集合中
15)sscan(name, cursor=0, match=None, count=None)
三:示例
[BEGIN] 2017/7/31 20:43:34 127.0.0.1:6379[2]> select 3 选择会话窗口3 OK 127.0.0.1:6379[3]> sadd n1 1 在集合中增加数据 (integer) 1 127.0.0.1:6379[3]> sadd n1 2 (integer) 1 127.0.0.1:6379[3]> sadd n1 3 (integer) 1 127.0.0.1:6379[3]> sadd n1 4 (integer) 1 127.0.0.1:6379[3]> SCARD n1 集合中有多少个元素 (integer) 4 127.0.0.1:6379[3]> sadd n2 3 (integer) 1 127.0.0.1:6379[3]> sadd n2 4 (integer) 1 127.0.0.1:6379[3]> sadd n2 5 (integer) 1 127.0.0.1:6379[3]> sadd n2 6 (integer) 1 127.0.0.1:6379[3]> scard n2 (integer) 4 127.0.0.1:6379[3]> sdiff n1 n2 两个集合的差集在n1中,不在n2中 1) "1" 2) "2" 127.0.0.1:6379[3]> sdiff n3 n1 n2 (empty list or set) 127.0.0.1:6379[3]> SDIFFSTORE n3 n1 n2 两个集合的差集在n1中,不在n2中并保存到n3中 (integer) 2 127.0.0.1:6379[3]> SINTER n1 n2 交集在n1中,也在n2中 1) "3" 2) "4" 127.0.0.1:6379[3]> SINTERSTORE n4 n1 n2 交集在n1中,也在n2中,并保存到n4中 (integer) 2 127.0.0.1:6379[3]> SISMEMBER n1 1 判断元素在不在集合中 (integer) 1 127.0.0.1:6379[3]> SMEMBERS n1 查看集合 1) "1" 2) "2" 3) "3" 4) "4" 127.0.0.1:6379[3]> SMEMBERS n2 1) "3" 2) "4" 3) "5" 4) "6" 127.0.0.1:6379[3]> SMEMBERS n3 1) "1" 2) "2" 127.0.0.1:6379[3]> SMEMBERS n4 1) "3" 2) "4" 127.0.0.1:6379[3]> smove n1 n2 1 把集合n1中元素1移动集合n2中 (integer) 1 127.0.0.1:6379[3]> SMEMBERS n1 1) "2" 2) "3" 3) "4" 127.0.0.1:6379[3]> SMEMBERS n2 1) "1" 2) "3" 3) "4" 4) "5" 5) "6" 127.0.0.1:6379[3]> spop n1 从集合左边移出一个元素并还回 "2" 127.0.0.1:6379[3]> SMEMBERS n1 1) "3" 2) "4" 127.0.0.1:6379[3]> SRANDMEMBER n2 2 从集体中随即取2个 1) "5" 2) "6" 127.0.0.1:6379[3]> SRANDMEMBER n2 2 1) "5" 2) "6" 127.0.0.1:6379[3]> SRANDMEMBER n2 2 1) "5" 2) "6" 127.0.0.1:6379[3]> SRANDMEMBER n2 2 1) "5" 2) "6" 127.0.0.1:6379[3]> SREM n2 6 从集合中删除一个元素 (integer) 1 127.0.0.1:6379[3]> SUNION n1 n2 两个集体并集 1) "1" 2) "3" 3) "4" 4) "5" 127.0.0.1:6379[3]> SUNION n5 n1 n2 两个集体并集,并保存到n5中 1) "1" 2) "3" 3) "4" 4) "5" 127.0.0.1:6379[3]> SMEMBERS n5 (empty list or set) 127.0.0.1:6379[3]> SUNIONSTORE n5 n1 n2 两个集体并集,并保存到n5中 (integer) 4 127.0.0.1:6379[3]> SSCAN n5 0 match 5 1 (error) ERR syntax error 127.0.0.1:6379[3]> SSCAN n5 0 match 5 1) "0" 2) 1) "5" [END] 2017/7/31 20:53:29