Set类型

在Redis中,可以将set类型看作为没有排序的字符集合,和List一样。可以在该类型的数据上执行添加、删除或判断某一元素是否存在等操作。只是,Set集合中不允许出现重复的元素。

Set类型可以在服务器端完成多个sets之间的聚合计算操作,如union、intersections和differences。由于这些操作均在服务端完成,因此效率极高,而且也节省了大量的网络IO开销。

set可包含的最大元素数量是4294967295。

  1. 添加元素:sadd key member [member …]
127.0.0.1:6379> sadd s1 1 2 3 4 5
(integer) 5
  1. 查看元素:smembers key
127.0.0.1:6379> smembers s1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
  1. 删除元素:srem key member [member …]
127.0.0.1:6379> srem s1 2 4
(integer) 2
127.0.0.1:6379> smembers s1
1) "1"
2) "3"
3) "5"
  1. 获取set中成员的数量:scard key
127.0.0.1:6379> scard s1
(integer) 3
  1. 随机返回set中的一个成员: srandmember key [count]
127.0.0.1:6379> srandmember s1 1
1) "3"
127.0.0.1:6379> srandmember s1 1
1) "1"
  1. 判断set中是否包含某个元素,返回1表示存在,返回0表示不存在:sismember key member
127.0.0.1:6379> sismember s1 2
(integer) 0
127.0.0.1:6379> sismember s1 3
(integer) 1
  1. 删除count个并返回值:spop key [count]
127.0.0.1:6379> spop s		1 2
1) "5"
2) "3"
127.0.0.1:6379> smembers s1
1) "1"
  1. 把source中的指定元素移动到destination 中 : smove source destination member
127.0.0.1:6379> sadd s1 1 2 3 4 5
(integer) 5
127.0.0.1:6379> sadd s2 a b c d e
(integer) 5
127.0.0.1:6379> smove s1 s2 2
(integer) 1
127.0.0.1:6379> smembers s1
1) "1"
2) "3"
3) "4"
4) "5"
127.0.0.1:6379> smembers s2
1) "d"
2) "b"
3) "a"
4) "2"
5) "e"
6) "c"
  1. 差集运算:sdiff key [key …]
127.0.0.1:6379> sadd s1 1 2 3
(integer) 3
127.0.0.1:6379> sadd s2 2 3 4
(integer) 3
127.0.0.1:6379> sadd s3 3 4 5
(integer) 3
127.0.0.1:6379> sdiff s1 s2
1) "1"
127.0.0.1:6379> sdiff s2 s1
1) "4"
  1. 交集运算:sinter key [key …]
127.0.0.1:6379> sinter s1 s2
1) "2"
2) "3"
127.0.0.1:6379> sinter s1 s2 s3
1) "3"
  1. 并集运算:sunion key [key …]
127.0.0.1:6379> sunion s1 s2 s3
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> sunion s1 s2
1) "1"
2) "2"
3) "3"
4) "4"
  1. 差集运算,把结果保存在destination 中:sdiffstore destination key [key …]
127.0.0.1:6379> sdiffstore ss1 s1 s2
(integer) 1
127.0.0.1:6379> smembers ss1
1) "1"
  1. 交集运算,把结果保存在destination 中:sinterstore destination key [key …]
127.0.0.1:6379> sinterstore ss2 s2 s3
(integer) 2
127.0.0.1:6379> smembers ss2
1) "3"
2) "4"
  1. 并集运算,把结果保存在destination 中 :sunionstore destination key [key …]
127.0.0.1:6379> sunionstore ss3 s1 s2 s3
(integer) 5
127.0.0.1:6379> smembers ss3
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"