Redis--集合数据结构和常用命令

Redis集合数据结构和常用命令

Redis 的集合不是一个线性结构,而是一个哈希表结构,它的内部会根据 hash 分子来存储和查找数据,理论上一个集合可以存储 2 的 32 次方减 1 个节点(大约 42 亿)个元素,因为采用哈希表结构,所以对于 Redis 集合的插入、删除和查找的复杂度都是 0(1),只是我们需要注意 3 点。

对于集合而言,它的每一个元素都是不能重复的,当插入相同记录的时候都会失败。
集合是无序的。
集合的每一个元素都是 String 数据结构类型。

Redis 的集合可以对于不同的集合进行操作,比如求出两个或者以上集合的交集、差集和并集等。集合命令,如表 1 所示。

表 1 集合命令
命   令 说   明 备   注
sadd key member1 [member2 member3......] 给键为 key 的集合増加成员 可以同时増加多个
scard key 统计键为 key 的集合成员数 
sdiffkey1 [key2] 找出两个集合的差集 参数如果是单key,那么 Redis 就返回这个 key 的所有元素
sdiftstore des key1 [key2] 先按 sdiff 命令的规则,找出 key1 和 key2 两 个集合的差集,然后将其保存到 des 集合中。
sinter key1 [key2] 求 key1 和 key2 两个集合的交集。 参数如果是单 key,那么 Redis 就返冋这个 key 的所有元素
sinterstore des key1 key2  先按 sinter 命令的规则,找出 key1 和 key2 两个集合的交集,然后保存到 des 中
sismember key member 判断 member 是否键为 key 的集合的成员 如果是返回 1,否则返回 0
smembers key 返回集合所有成员 如果数据量大,需要考虑迭代遍历的问题
smove src des member  将成员 member 从集合 src 迁移到集合 des 中
spop key 随机弹出集合的一个元素 注意其随机性,因为集合是无序的
srandmember key [count] 随机返回集合中一个或者多个元素,count 为限制返回总数,如果 count 为负数,则先求其绝对值  count 为整数,如果不填默认为 1,如果 count 大于等于集合总数,则返回整个集合
srem key member1[member2......] 移除集合中的元素,可以是多个元素 对于很大的集合可以通过它删除部分元素,避免删除大量数据引发 Redis 停顿
sunion key1 [key2] 求两个集合的并集 参数如果是单 key,那么 Redis 就返回这个 key 的所有元素
sunionstore des key1 key2 先执行 sunion 命令求出并集,然后保存到键为 des 的集合中

表 1 中命令的前缀都包含了一个 s,用来表达这是集合的命令,集合是无序的,并且支持并集、交集和差集的运算。

示例

在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我 们也可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。需要 说明的是,这些操作的时间是常量时间。Set可包含的最大元素数是4294967295。
和List类型不同的是,Set集合中不允许出现重复的元素。和List类型相比,Set类 型在功能上还存在着一个非常重要的特性,即在服务器端完成多个Sets之间的聚合计 算操作,如unions、intersections和differences。由于这些操作均在服务端完成, 因此效率极高,而且也节省了大量的网络IO开销。

在这里插入图片描述
1. sadd key value1、value2…: 向set中添加数据,如果该key的值已有则不会重复添加
2. smembers key: 获取set中所有的成员
3. scard key: 获取set中成员的数量

在这里插入图片描述
4. sismember key member: 判断参数中指定的成员是否在该set中,1表示存 在,0表示不存在或者该key本身就不存在
5. srem key member1、member2…: 删除set中指定的成员

在这里插入图片描述

6. srandmember key: 随机返回set中的一个成员
在这里插入图片描述
7. sdiff key1 key2: 返回key1与key2中相差的成员,而且与key的顺序有关。即返回差集。
在这里插入图片描述
8. sdiffstore destination key1 key2: 将key1、key2相差的成员存储在destination上
在这里插入图片描述

9. sinter key[key1,key2…]: 返回交集。
10. sinterstore destination key1 key2: 将返回的交集存储在destination上

在这里插入图片描述
11. sunion key1、key2: 返回并集。
12. sunionstore destination key1 key2: 将返回的并集存储在destination上
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值