缓存数据库-redis数据类型和操作(set) 一: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