Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

[i]SADD key member1 [member2] 向集合添加一个或多个成员[/i] 

 redis 127.0.0.1:6379> sadd ids a1 

 (integer) 1 

 redis 127.0.0.1:6379> sadd ids a2 

 (integer) 1 

 redis 127.0.0.1:6379> sadd ids a3 

 (integer) 1 

 redis 127.0.0.1:6379> sadd ids a4 

 (integer) 1 


[i]scard获取成员个数[/i] 

 redis 127.0.0.1:6379> scard ids //在上面我们添加了4个成员 

 (integer) 4 


[i]sdiff 返回给定集合的差集[/i] 

 redis 127.0.0.1:6379> sadd userIds a1 

 (integer) 1 

 redis 127.0.0.1:6379> sadd userIds a2 

 (integer) 1 

 redis 127.0.0.1:6379> sadd userIds dxc 

 (integer) 1 

 redis 127.0.0.1:6379> sadd userIds dac 

 (integer) 1 

 redis 127.0.0.1:6379> sdiff ids userIds //注:ids和userId两个集合的差集(ids中有userIds中没有的成员们) 

 1) "a3" 

 2) "a4" 


[i]sdiffstore 把ids userIds集合的差集存贮到集合theIds 结合中[/i] 

 redis 127.0.0.1:6379> sdiffstore theIds ids userIds 

 (integer) 2 

 redis 127.0.0.1:6379> smembers theIds //smembers 返回所有成员 

 1) "a3" 

 2) "a4" 


[i]sinter 求交集[/i] 

redis 127.0.0.1:6379> sinter ids userIds 

 1) "a2" 

 2) "a1" 


[i]sinterstore 求ids和userIds的交集并存贮到集合theSameIds[/i] 

redis 127.0.0.1:6379> sinterstore theSameIds ids userIds 

 (integer) 2 

 redis 127.0.0.1:6379> smembers theSameIds 

 1) "a2" 

 2) "a1" 


[i]sismember 判断某个元素是否为某个集合的成员[/i] 

 redis 127.0.0.1:6379> sismember ids a1 //判断a1是否为集合ids的成员 是返回1 不是返回0 

 (integer) 1 

 redis 127.0.0.1:6379> sismember ids a1cc 

 (integer) 0 


[i]smove source destination member 

将member元素从source 集合移动到 destination 集合[/i] 


[i]spop key 移除并返回集合中的一个随机元素[/i] 

 redis 127.0.0.1:6379> spop ids 

 "a3" 



[i]求并集[/i] 

redis 127.0.0.1:6379> sadd region1 xian 

(integer) 1 

redis 127.0.0.1:6379> sadd region1 changsha 

(integer) 1 

redis 127.0.0.1:6379> sadd region1 bejing 

(integer) 1 

redis 127.0.0.1:6379> sadd region2 bejing 

(integer) 1 

redis 127.0.0.1:6379> sadd region2 guangzhou 

(integer) 1 

redis 127.0.0.1:6379> sadd region2 shengzheng 

(integer) 1 

例如:求region1 和region2 的并集 

redis 127.0.0.1:6379> sunion region1 region2 

1) "bejing" 

2) "guangzhou" 

3) "xian" 

4) "shengzheng" 

5) "changsha" 

例如:求region1 和region2 的并集并 存贮在 region集合中 

redis 127.0.0.1:6379> sunionstore region region1 region2 

(integer) 5 

redis 127.0.0.1:6379> smembers region 

1) "bejing" 

2) "guangzhou" 

3) "xian" 

4) "shengzheng" 

5) "changsha" 

[i] 

Redis Sscan 命令用于迭代集合键中的元素。[/i] 

redis 127.0.0.1:6379> SADD myset1 "hello" 

(integer) 1 

redis 127.0.0.1:6379> SADD myset1 "hi" 

(integer) 1 

redis 127.0.0.1:6379> SADD myset1 "bar" 

(integer) 1 

redis 127.0.0.1:6379> sscan myset1 0 match h* 

1) "0" 

2) 1) "hello" 

 2) "h1"