Redis 05 Set
Set 中的值是不能重复的
应用场景:共同关注
添加
插入值
sadd
127.0.0.1:6379> sadd set hello
(integer) 1
127.0.0.1:6379> sadd set world
(integer) 1
127.0.0.1:6379> sadd set world # 插入了重复值,没有生效
(integer) 0
127.0.0.1:6379> smembers set
1) "world"
2) "hello"
查看
查看所有元素
smembers
127.0.0.1:6379> smembers set
1) "world"
2) "hello"
判断元素是否存在
sismember
127.0.0.1:6379> SMEMBERS set
1) "world"
2) "hello"
127.0.0.1:6379> sismember set hello # 存在返回 1
(integer) 1
127.0.0.1:6379> sismember set hello1 # 不存在返回 0
(integer) 0
获取元素个数
scard
127.0.0.1:6379> scard set
(integer) 2
获取随机元素
srandmember
127.0.0.1:6379> smembers set
1) "world"
2) "hello"
127.0.0.1:6379> srandmember set
"world"
127.0.0.1:6379> srandmember set
"hello"
获取两个集合的差集
sdiff
127.0.0.1:6379> smembers set1
1) "b"
2) "a"
127.0.0.1:6379> smembers set2
1) "b"
2) "c"
127.0.0.1:6379> sdiff set1 set2 # 取 set1 对于 set2 的差集
1) "a"
127.0.0.1:6379> sdiff set2 set1 # 取 set2 对于 set1 的差集
1) "c"
获取两个集合的交集
sinter
127.0.0.1:6379> smembers set1
1) "b"
2) "a"
127.0.0.1:6379> smembers set2
1) "b"
2) "c"
127.0.0.1:6379> sinter set1 set2 # 取 set1 和 set2 的交集
1) "b"
可以用来获取共同关注。
获取两个集合的并集
sunion
127.0.0.1:6379> smembers set1
1) "b"
2) "a"
127.0.0.1:6379> smembers set2
1) "b"
2) "c"
127.0.0.1:6379> sunion set1 set2
1) "b"
2) "c"
3) "a"
移除
移除指定元素
srem
127.0.0.1:6379> srem set world
(integer) 1
127.0.0.1:6379> smembers set
1) "hello"
随机移除元素
spop
127.0.0.1:6379> smembers set
1) "world"
2) "hello"
127.0.0.1:6379> spop set
"world"
移动
移动指定元素到其他集合
smove
127.0.0.1:6379> smembers set
1) "hello"
127.0.0.1:6379> smove set set1 hello # 移动 set 中的 hello 到 set1 中(set1 是存在的)
(integer) 1
127.0.0.1:6379> smembers set1
1) "hello"
2) "world"
127.0.0.1:6379> smembers set
(empty array)
127.0.0.1:6379> smove set1 set2 hello # 移动 set1 中的 hello 到 set2 中(set2 不存在则创建)
(integer) 1
127.0.0.1:6379> smembers set2
1) "hello"