目录
一、Set简介
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 - 1 (4294967295, 每个集合可存储40多亿个成员)。
二、增加、查看、删除 Set 中的元素及 Set 的长度
1)插入
sadd key member [member ...]
2)查看 Set 中元素
smembers key
示例:
127.0.0.1:6379> sadd nums 1 2 3 4 5 6 7 1 2 3
(integer) 7
127.0.0.1:6379> smembers nums
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
3)删除 Set 中元素
srem key member [member ...]
127.0.0.1:6379> srem nums 7 6
(integer) 2
127.0.0.1:6379> smembers nums
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
4)获取 Set 长度
scard key
示例:
127.0.0.1:6379> sadd nums 3 5 6 7 4 2 5453 6 4 2
(integer) 5
127.0.0.1:6379> scard nums
(integer) 7
三、随机获取 Set 中的值
1)随机获取值并且删掉
spop key [count] count不写默认删掉 1 个
示例:
(integer) 2
127.0.0.1:6379> smembers nums
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> spop nums 2
1) "1"
2) "2"
127.0.0.1:6379> spop nums
"5"
127.0.0.1:6379> smembers nums
1) "3"
2) "4"
2)随机获取值但 不删掉
srandmember key [count]
示例:
127.0.0.1:6379> smembers nums
1) "3"
2) "4"
127.0.0.1:6379> srandmember nums
"4"
127.0.0.1:6379> smembers nums
1) "3"
2) "4"
四.判断某一 member 是否存在
sismember key member
存在返回 1,不存在返回 0.
127.0.0.1:6379> sadd nums 3 5 6 7 4 2 5453 6 4 2
(integer) 5
127.0.0.1:6379> sismember nums 3
(integer) 1
127.0.0.1:6379> sismember nums 99
(integer) 0
五、在俩个 Set 之间移动元素
smove source destination member
把 source 中的 member 移动到 destination 中
示例:
127.0.0.1:6379> sadd s1 1 2 3
(integer) 3
127.0.0.1:6379> sadd s2 a b c
(integer) 3
127.0.0.1:6379> smove s1 s2 3
(integer) 1
127.0.0.1:6379> smembers s2
1) "b"
2) "3"
3) "c"
4) "a"
127.0.0.1:6379> smembers s1
1) "1"
2) "2"
六、多个 Set 之间运算
1)求并集
sinter key [key ...]
示例:
127.0.0.1:6379> sadd zhangsan a b c d e
(integer) 5
127.0.0.1:6379> sadd lisi a d g
(integer) 3
127.0.0.1:6379> sadd wangwu a d c
(integer) 3
127.0.0.1:6379> sunion zhangsan lisi wangwu
1) "g"
2) "b"
3) "e"
4) "a"
5) "c"
6) "d"
2)求交集
sunion key [key ...]
示例:
127.0.0.1:6379> sadd zhangsan a b c d e
(integer) 5
127.0.0.1:6379> sadd lisi a d g
(integer) 3
127.0.0.1:6379> sadd wangwu a d c
(integer) 3
127.0.0.1:6379> sinter zhangsan lisi wangwu
1) "d"
2) "a"
3)求差集
sdiff key [key ...]
示例:
127.0.0.1:6379> sadd zhangsan a b c d e
(integer) 5
127.0.0.1:6379> sadd lisi a d g
(integer) 3
127.0.0.1:6379> sdiff zhangsan lisi
1) "b"
2) "c"
3) "e"
4)求得的结果可以存到另一个 key 中
sinterstore destination key [key ...]
sunionstore destination key [key ...]
sdiffstore destination key [key ...]
示例:
127.0.0.1:6379> sadd zhangsan a b c d e
(integer) 5
127.0.0.1:6379> sadd lisi a d g
(integer) 3
127.0.0.1:6379> sadd wangwu a d c
(integer) 3
127.0.0.1:6379> sinterstore interResult zhangsan lisi wangwu
(integer) 2
127.0.0.1:6379> smembers interResult
1) "a"
2) "d"