Redis(5)——set

集合set类型的保存多个字符串元素,集合不允许存在重复元素,并且集合的元素是无序的,不能通过索引下标获取元素

sadd

sadd key element [element ...] 向集合添加元素集合不能存在重复元素

127.0.0.1:6379> sadd setkey a b c
(integer) 3
127.0.0.1:6379> sadd setkey a b c
(integer) 0

srem

srem key element [element ...] 删除元素

127.0.0.1:6379> srem setkey c
(integer) 1

smembers

``smembers key `获取所有集合元素,返回的结果是无序的

127.0.0.1:6379> smembers setkey
1) "b"
2) "a"
scard

获取集合元素个数

127.0.0.1:6379> scard setkey
(integer) 2

sismember

sismember key member给定的元素是否在集合内,存在返回1 ,不存在返回0.

127.0.0.1:6379> sismember setkey a
(integer) 1

srandmember

srandmember key [count ] 随机从集合返回指定个数元素,默认返回1个

127.0.0.1:6379> sadd setkey c d e f
(integer) 4
127.0.0.1:6379> srandmember setkey 2
1) "a"
2) "f"
127.0.0.1:6379> srandmember setkey
"b"
spop

随机弹出集合元素

127.0.0.1:6379> spop setkey
"b"

sinter

集合的交集

127.0.0.1:6379> sadd user_1 it mus his spo
(integer) 4
127.0.0.1:6379> sadd user_2 news ent spo it
(integer) 4
127.0.0.1:6379> sinter user_1 user_2
1) "spo"
2) "it"

sinterstore

sinterstore destinationkey key [key ...] 将交集保存在destinationkey

127.0.0.1:6379> sinterstore user_inter1_2 user_1 user_2
(integer) 2
127.0.0.1:6379> smembers user_inter1_2
1) "spo"
2) "it"

sunion

集合的并集

127.0.0.1:6379> sunion user_1 user_2
1) "mus"
2) "spo"
3) "his"
4) "news"
5) "it"
6) "ent"

sunionstore

将并集的结果保存新的集合中

127.0.0.1:6379> sunionstore user_union1_2 user_1 user_2
(integer) 6
127.0.0.1:6379> smembers user_union1_2
1) "mus"
2) "spo"
3) "his"
4) "news"
5) "it"
6) "ent"

sdiff

集合的差集

127.0.0.1:6379> sdiff user_1 user_2
1) "his"
2) "mus"

sdiffstore

127.0.0.1:6379> sdiffstore user_diff1_2 user_1 user_2
(integer) 2
127.0.0.1:6379> smembers user_diff1_2
1) "his"
2) "mus"

内部编码

集合类型的内部编码有2种: intset 整数集合:当集合类型元素都是整数且个数小于list-max-intlist-entries配置(默认512个),redis会使用intlist作为列表的内部实现,减少内存的使用。 hashtable哈希表当集合类型无法满足intset的条件是,redis会使用hashtable作为列表的内部实现。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券