redis分布式缓存(十七)一一常用命令(Set)常用命

常用命令(Set)

「这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战

并集、交集、差集-概念

A = {'a', 'b', 'c'}
B = {'a', 'e', 'i', 'o', 'u'}

inter(x, y): 交集,在集合x和集合y中都存在的元素。
inter(A, B) = {'a'}

union(x, y): 并集,在集合x中或集合y中的元素,如果一个元素在x和y中都出现,那只记录一次即可。
union(A,B) = {'a', 'b', 'c', 'e', 'i', 'o', 'u'}

diff(x, y): 差集,在集合x中而不在集合y中的元素。
diff(A,B) = {'b', 'c'}

card(x): 基数,一个集合中元素的数量。
card(A) = 3

空集: 基数为0的集合。
复制代码

sadd-添加元素

作用:向名称为key的set中添加元素member

语法: sadd key member [member ...]

127.0.0.1:6379> sadd users u1
(integer) 1
127.0.0.1:6379> sadd users u2
(integer) 1
127.0.0.1:6379> sadd users u3 u4
(integer) 2
复制代码

smembers-查询所有元素

作用:返回名称为key的set的所有元素

语法: smembers key

127.0.0.1:6379> smembers users
1) "u2"
2) "u4"
3) "u1"
4) "u3"
复制代码

srem-删除元素

作用:删除名称为key的set中的元素member

语法: srem key member [member ...]

127.0.0.1:6379> smembers users
1) "u2"
2) "u4"
3) "u1"
4) "u3"
127.0.0.1:6379> srem users u1
(integer) 1
127.0.0.1:6379> srem users u3 u4
(integer) 2
127.0.0.1:6379> smembers users
1) "u2"
复制代码

sismember-是否存在元素

作用:member是否是名称为key的set的元素

语法: sismember key member

127.0.0.1:6379> smembers users
1) "u2"
127.0.0.1:6379> sismember users u2
(integer) 1
127.0.0.1:6379> sismember users u1
(integer) 0
复制代码

scard-返回元素个数

作用:返回名称为key的set的基数,一个集合中元素的数量。

语法: scard key

127.0.0.1:6379> smembers users
1) "u2"
127.0.0.1:6379> scard users
(integer) 1
复制代码

smove-移动元素到另一集合

作用:将member元素从source集合移动到destination集合

语法:smove source destination member

127.0.0.1:6379> smembers users
1) "u2"
2) "u4"
3) "u1"
4) "u3"
127.0.0.1:6379> smembers blacklist
(empty list or set)
127.0.0.1:6379> smove users blacklist u1
(integer) 1
127.0.0.1:6379> smembers users
1) "u2"
2) "u4"
3) "u3"
127.0.0.1:6379> smembers blacklist
1) "u1"
复制代码

srandmember-随机返回n个元素

作用:随机返回名称为key的set的count个元素

语法: srandmember key [count]

127.0.0.1:6379> smembers users
1) "u2"
2) "u4"
3) "u3"
127.0.0.1:6379> srandmember users
"u3"
127.0.0.1:6379> srandmember users 2
1) "u2"
2) "u3"
复制代码

spop-随机返回n个元素并删除

作用:随机返回并删除名称为key的set中一个元素

语法:spop key [count]

127.0.0.1:6379> smembers users
1) "u2"
2) "u4"
3) "u3"
127.0.0.1:6379> spop users
"u3"
127.0.0.1:6379> smembers users
1) "u2"
2) "u4"
复制代码

sinter-求交集

作用:求交集

语法: sinter key [key ...]

127.0.0.1:6379> smembers group1
1) "3"
2) "2"
3) "4"
4) "1"
5) "a"
127.0.0.1:6379> smembers group2
1) "b"
2) "a"
3) "1"
4) "c"
127.0.0.1:6379> sinter group1 group2
1) "a"
2) "1"
复制代码

sinterstore-求交集结果保存到新集合

作用:求交集并将交集保存到dstkey的集合

语法: sinterstore destination key [key ...]

127.0.0.1:6379> sinterstore group3 group1 group2
(integer) 2
127.0.0.1:6379> smembers group1
1) "3"
2) "4"
3) "1"
4) "2"
5) "a"
127.0.0.1:6379> smembers group2
1) "b"
2) "a"
3) "1"
4) "c"
127.0.0.1:6379> smembers group3
1) "a"
2) "1"
复制代码

sunion-求并集

作用:求并集

语法: sunion key [key ...]

127.0.0.1:6379> sunion group1 group2
1) "3"
2) "4"
3) "1"
4) "2"
5) "b"
6) "a"
7) "c"
复制代码

sunionstore-求并集结果保存到新集合

作用:求并集并将并集保存到dstkey的集合

语法:sunionstore destination key [key ...]

127.0.0.1:6379> sunionstore group4 group1 group2
(integer) 7
127.0.0.1:6379> smembers group4
1) "3"
2) "4"
3) "1"
4) "2"
5) "b"
6) "a"
7) "c"
复制代码

sdiff-求差集

作用:求差集

语法: sdiff key [key ...]

127.0.0.1:6379> smembers group1
1) "3"
2) "4"
3) "1"
4) "2"
5) "a"
127.0.0.1:6379> smembers group2
1) "b"
2) "a"
3) "1"
4) "c"
127.0.0.1:6379> sdiff group1 group2
1) "2"
2) "3"
3) "4"

复制代码

sdiffstore-求差集结果保存到新集合

作用:求差集并将差集保存到dstkey的集合

语法: sdiffstore destination key [key ...]

127.0.0.1:6379> sdiffstore group5 group1 group2
(integer) 3
127.0.0.1:6379> smembers group5
1) "2"
2) "3"
3) "4"
复制代码

redis分布式缓存系列