Redis【6】—— Set类型

四、各类型指令介绍

(四)Set类型

1. 基本指令

sadd key 1 2 3 4
type key

sadd k 1 1 2 3 4 # 添加元素,有重复会自动删除

smembers key
smembers k 

sismember key 1
sismember key 5 # 删除不存在的元素,找不到该元素则删除0个

image.png

smembers key
# 随机删除 -- 返回删除成功的元素
spop key 
spop key
spop key
spop key

# 指定删除 -- 返回删除成功的元素个数
smembers k
srem k 11
srem k 11 # 删除不存在的元素
smembers k
srem k 8 9 10
smembers k

image.png
image.png

sadd key 1 2 3 4 5 6 7 8
smembers key

srandmember key # 获取随机数

image.png

smembers key
smembers k

# 若元素重复则不会返回错误,只不过最终不会重复
# 若key中不存在该元素,则最终返回0
smove key k 5 6 7 8 # error
smove key k 5 
smove key k 6
smove key k 7
smove key k 8

smembers key
smembers k

image.png

# inter 交集;union 并集;
# diff 差集:在 k1 中存在 在 k2 中不存在
smembers key
smembers k
sinter key k
sinterstore kk key k
smembers kk

smembers k1
smembers k2
sunion k1 k2
sunionstore key k1 k2
smemberss key

smembers k1
smembers k2
sdiff k1 k2 # 在 k1 中存在,而在 k2 中不存在
sdiff k2 k1 # 在 k2 中存在,而在 k1 中不存在
sdiffstore kk k1 k2
sdiffstore kk k2 k1

image.png
image.png
image.png

2. 内部编码

OBJECR encoding key # intset

sadd kkk hello world
smembers kkk
OBJECT encoding kkk # hashtable

image.png
intset(整数集合)类型是为了节省空间,而做出的特定优化。当元素均为整数 且 元素个数不是很多的时,set的内部编码就是intset
C++中的std:set背后的数据结构是红黑树;而Java中的Set本身是一个接口,这个接口后面的实现可以是TreeSet,也可以是 HashSet

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值