Redis集合(Set)
概述
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
sadd
添加set元素(添加一个或多个),set集合如果不存在就会先创建集合
sadd key member1 member2…
127.0.0.1:6379> sadd set1 a b c a
(integer) 3
smembers
查看指定key集合元素
smembers key
127.0.0.1:6379> smembers set1
1)”b”
2)”a”
3)”c”
srem
删除元素(删除一个或多个元素)
srem key member1 member2…
127.0.0.1:6379> smembers set1
1)”1”
2)”c”
3)”a”
4)”b”
5)”3”
6)”2”
127.0.0.1:6379> srem set1 a 1
(integer) 2
127.0.0.1:6379> smembers set1
1)”b”
2)”c”
3)”3”
4)”2”
sismember
判断某个元素是否存在(返回1表示存在,返回0表示不存在)
sismember key member
127.0.0.1:6379> smembers set1
1)”b”
2)”c”
3)”3”
4)”2”
127.0.0.1:6379> sismember set1 a
(integer) 0
127.0.0.1:6379> sismember set1 2
(integer) 1
sdiff
计算两个集合的差集(key1去掉key1和key2的交集元素,key1和key2的位置交换会得到不同的结果)
sdiff key1 key2
127.0.0.1:6379> sadd set2 a b c
(integer) 3
127.0.0.1:6379> sadd set3 b c d e
(integer) 4
127.0.0.1:6379> sdiff set2 set3
1)”a”
127.0.0.1:6379> sdiff set3 set2
1)”d”
2)”e”
sinter
计算两个集合的交集
sinter key1 key2
127.0.0.1:6379> sinter set2 set3
1)”b”
2)”c”
sunion
计算两个集合的并集
sunion key1 key2
127.0.0.1:6379> sunion set2 set3
1)”b”
2)”a”
3)”c”
4)”e”
5)”d”
scard
计算元素总数
scard key
127.0.0.1:6379> smembers set1
1)”b”
2)”c”
3)”3”
4)”2”
127.0.0.1:6379> scard set1
(integer) 4
srandmember
随机取一个或多个元素,count为空或者是1时,只随机选一个元素
srandmember key count
127.0.0.1:6379> srandmember set1
“3”
127.0.0.1:6379> srandmember set1
“b”
127.0.0.1:6379> srandmember set1 2
1)”b”
2)”3”
127.0.0.1:6379> srandmember set1 2
1)”3”
2)”2”
sdiffstore
把差集结果存储到新集合中
sdiffstore newKey key1 key2
127.0.0.1:6379> smembers set2
1)”b”
2)”a”
3)”c”
127.0.0.1:6379> smembers set3
1)”d”
2)”b”
3)”e”
4)”c”
127.0.0.1:6379> sdiffstore newSet set2 set3
(integer) 1
127.0.0.1:6379> smembers newSet
1)”a”
sinterstore
把交集结果存储到新集合中
sinterstore newKey key1 key2
127.0.0.1:6379> smembers set2
1)”b”
2)”a”
3)”c”
127.0.0.1:6379> smembers set3
1)”d”
2)”b”
3)”e”
4)”c”
127.0.0.1:6379> sinterstore newSet set2 set3
(integer) 2
127.0.0.1:6379> smembers newSet
1)”b”
2)”c”
sunionstore
把并集结果存储到新集合中
sunionstore newKey key1 key2
127.0.0.1:6379> smembers set2
1)”b”
2)”a”
3)”c”
127.0.0.1:6379> smembers set3
1)”d”
2)”b”
3)”e”
4)”c”
127.0.0.1:6379> sunionstore newSet set2 set3
(integer) 5
127.0.0.1:6379> smembers newSet
1)”b”
2)”a”
3)”c”
4)”e”
5)”d”