Set类型
在Redis中,可以将set类型看作为没有排序的字符集合,和List一样。可以在该类型的数据上执行添加、删除或判断某一元素是否存在等操作。只是,Set集合中不允许出现重复的元素。
Set类型可以在服务器端完成多个sets之间的聚合计算操作,如union、intersections和differences。由于这些操作均在服务端完成,因此效率极高,而且也节省了大量的网络IO开销。
set可包含的最大元素数量是4294967295。
- 添加元素:sadd key member [member …]
127.0.0.1:6379> sadd s1 1 2 3 4 5 (integer) 5
- 查看元素:smembers key
127.0.0.1:6379> smembers s1 1) "1" 2) "2" 3) "3" 4) "4" 5) "5"
- 删除元素: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"
- 获取set中成员的数量:scard key
127.0.0.1:6379> scard s1 (integer) 3
- 随机返回set中的一个成员: srandmember key [count]
127.0.0.1:6379> srandmember s1 1 1) "3" 127.0.0.1:6379> srandmember s1 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
- 删除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"
- 把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"
- 差集运算: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"
- 交集运算: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"
- 并集运算: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"
- 差集运算,把结果保存在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"
- 交集运算,把结果保存在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"
- 并集运算,把结果保存在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"