目录

 

存储set

说明

常用命令:

用处:set使用场景


存储set

说明

没有排序的字符集合,和list一样。可添加,删除,或判断元素是否存在的操作。(1)和list类型不同,不允许出现重复的元素。和c++的set容器是完全相同。set类型功能上存在服务器端完成聚合计算。效率很高,节省网络的开销。(2)最大允许元素4294967295。

常用命令:

(1)添加和删除元素(重复的元素无法添加,sadd,srem)

添加命令:sadd myset(set的名称) a b c(数据)

删除命令:srem myset(set的名称) 1 2(数据)

127.0.0.1:6379> sadd myset a b c
(integer) 3
127.0.0.1:6379> sadd myset a
(integer) 0
127.0.0.1:6379> sadd myset 1 2 3
(integer) 3
127.0.0.1:6379> srem myset 1 2
(integer) 2

(2)获得集合中的元素(smembers , sismember)

查询元素:smembers myset

判断是否存在: sismember myset a(判断set中是否存在a元素,存在则返回1,不存在则返回0)

127.0.0.1:6379> smembers myset
1) "b"
2) "a"
3) "3"
4) "c"
127.0.0.1:6379> sismember myset a
(integer) 1
127.0.0.1:6379> sismember myset x
(integer) 0

(3)集合中的差集运算(sdiff)

返回两个集合当中相差的成员,与key的顺序有关系的。(mya1和myb1相差b)

127.0.0.1:6379> sadd mya1 a b c
(integer) 3
127.0.0.1:6379> sadd myb1 a c e 1 2
(integer) 5
127.0.0.1:6379> sdiff mya1 myb1
1) "b"

(4)集合中的交集运算(sinter)

相交a c

127.0.0.1:6379> sadd mya2 a b c
(integer) 3
127.0.0.1:6379> sadd myb2 a c 1 2
(integer) 4
127.0.0.1:6379> sinter mya2 myb2
1) "c"
2) "a"

(5)集合中的并集运算

127.0.0.1:6379> sadd mya3 a b c
(integer) 3
127.0.0.1:6379> sadd myb3 a c 1 2
(integer) 4
127.0.0.1:6379> sunion mya3 myb3
1) "b"
2) "1"
3) "a"
4) "2"
5) "c"

(6)扩展命令

查看具体数量:scard 

127.0.0.1:6379> scard myset
(integer) 4

随机提取元素:srandmember

127.0.0.1:6379> srandmember myset
"b"
127.0.0.1:6379> srandmember myset
"a"
127.0.0.1:6379> srandmember myset
"b"

将两个集合相差的成员存储到另一个集合中:sdiffstore 

127.0.0.1:6379> sdiffstore my1 mya1 myb1
(integer) 1
127.0.0.1:6379> smembers my1
1) "b"

将两个集合交际的成员存储到另一个集合中:sinterstore

127.0.0.1:6379> sinterstore my2 mya1 myb1
(integer) 2
127.0.0.1:6379> sinter mya1 myb1
1) "c"
2) "a"
127.0.0.1:6379> smembers my2
1) "a"
2) "c"

并集存储

127.0.0.1:6379> sunion mya3 myb3
1) "b"
2) "1"
3) "a"
4) "2"
5) "c"
127.0.0.1:6379> sunionstore my3 mya3 myb3
(integer) 5
127.0.0.1:6379> smembers my3
1) "b"
2) "1"
3) "a"
4) "2"
5) "c"

用处:set使用场景

(1)跟踪唯一性数据

(2)用于维护对象之间的关联关系

redis跟踪数据唯一性,访问博客的唯一性。每次访问把访问者ip存储set中,保证了唯一性。充分用服务器端聚合高效,维护数据对象关联关系,如购买电子设备的id,存储到set中,另外购买的id存储到set中,可以比较交际查看到这个用户购买了哪些电器。

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐