集合

作者: lookphp | 来源:发表于2019-07-11 15:39 被阅读0次

集合也是用来保存多个的字符串元素

image.png

集合特点

  • 集合中不允许有重复元素
  • 集合中的元素是无序的
  • 不能通过索引下标获取元素
一个集合最多可以存储

个元素。

redis 支持集合内的增删改查,同时也支持多个集合取交集、并集、差集。

命令

集合内操作

  • 添加元素 sadd key element [element ...]
  • 删除元素 srem key element [element ...]
  • 计算元素个数 scard key 时间复杂度为O(1) , 不会遍历集合所有元素,而是直接使用redis的内部变量
  • 判断元素是否在集合中 sismember key element
  • 随机从集合中返回指定个数的元素 srandmember key [count] 不写count,默认数量是1
  • 从集合随机弹出元素 spop key [count]
  • 获取所有元素 smembers key

spop 和 srandmember的区别

相同点 不同点
都是随机从集合中选出元素 spop命令执行后,元素会从集合中删除,而srandmember不会

注意
smemberslrangehgetall 都是属于比较重的命令,如果元素过多,会存在阻塞Redis的可能性。这时候可以使用sscan来完成。

集合间操作

  • 求多个集合的交集 sinter key [key ...]
  • 求多个集合的并集 sunion key [key ...]
  • 求多个集合的差集 sdiff key [key ...]
  • 将交集、并集、差集的结果保存
    sinterstore destination key [key ...]
    sunionstore destination key [key ...]
    sdiffstore destionation key [key ...]

内部编码

  • intset (整数集合) 当集合中的元素都是整数且小于配置set- max- intset- entries时
  • hashtable (哈希表)

使用场景

  • sadd = Tagging (标签)
  • spop/srandmember = Random item (生成随机数 ,比如抽奖)
  • sadd + sinter = Social Graph (社交需求)

相关文章

  • 我的Swift的学习总结 -->第二周

    集合 集合:Set,定义一个集合可以写成:var 集合名 : Set<集合类型> = [集合元素],具体的集合应用...

  • markdown 测试

    集合 集合 集合 引用

  • kotlin学习第五天:集合,高阶函数,Lambda表达式

    集合 list集合 list集合分为可变集合与不可变集合。由list of创建的集合为不可变集合,不能扩容,不能修...

  • kotlin练习 ---- 集合练习

    kotlin练习 - 集合练习 Set集合 Set集合创建 Set集合的使用 List集合 List集合创建 Li...

  • 集合总结

    集合 集合分为单列集合和双列集合两种: 一.单列集合: Collection是单列集合的顶级接口: 其中有三类集合...

  • 映射、元组、集合

    映射 元组 集合 集合之seq 集合之set 集合之map

  • 16.Collection集合

    主要内容: Collection 集合 迭代器 增强for List 集合 Set 集合 1,集合 集合是java...

  • 集合与有序集合

    集合分为有序集合 (zset) 和无序集合 (set), 一般无序集合也直接说成集合 无序集合 (set) 无序集...

  • python入坑第八天|集合

    好的,各位蛇友,我们今天来学习集合。 内容: 集合的创建 集合操作符号 集合的内置函数 集合的创建 集合用set(...

  • 集合框架

    集合框架的概念 集合:存放数据的容器 集合框架:java中,用于表示集合,以及操作集合的类和接口的统称 数组与集合...

网友评论

      本文标题:集合

      本文链接:https://www.haomeiwen.com/subject/rterkctx.html