• Redis常用数据类型--Set


    SADD

    将⼀个或者多个元素添加到 set 中
    注意: 重复的元素⽆法添加到 set 中

    SADD key member [member ...]
    
    • 1

    时间复杂度:O(1)

    SMEMBERS

    获取⼀个 set 中的所有元素
    注意: 元素间的顺序是⽆序的

    SMEMBERS key
    
    • 1

    时间复杂度:O(N)

    SISMEMBER

    判断⼀个元素在不在 set 中

    SISMEMBER key member
    
    • 1

    时间复杂度:O(1)

    SCARD

    获取⼀个 set 的基数(cardinality),即 set 中的元素个数

    SCARD key
    
    • 1

    时间复杂度:O(1)

    SPOP

    从 set 中删除并返回⼀个或者多个元素。注意,由于 set 内的元素是⽆序的,所以取出哪个元素实际是 未定义⾏为,即可以看作随机的

    SPOP key [count]
    
    • 1

    时间复杂度:O(N), n 是 count

    SMOVE

    将⼀个元素从源 set 取出并放⼊⽬标 set 中

     SMOVE source destination member
    
    • 1

    时间复杂度:O(1)

    SREM

    将指定的元素从 set 中删除

    SREM key member [member ...]
    
    • 1

    时间复杂度:O(N), N 是要删除的元素个数

    SINTER

    获取给定 set 的交集中的元素

    SINTER key [key ...]
    
    • 1

    时间复杂度:O(N * M), N 是最⼩的集合元素个数. M 是最⼤的集合元素个数

    SINTERSTORE

    获取给定 set 的交集中的元素并保存到⽬标 set 中

    SINTERSTORE destination key [key ...]
    
    • 1

    时间复杂度:O(N * M), N 是最⼩的集合元素个数. M 是最⼤的集合元素个数

    SUNION

    获取给定 set 的并集中的元素

    SUNION key [key ...]
    
    • 1

    时间复杂度:O(N), N 给定的所有集合的总的元素个数

    SUNIONSTORE

    获取给定 set 的并集中的元素并保存到⽬标 set 中

     SUNIONSTORE destination key [key ...]
    
    • 1

    时间复杂度:O(N), N 给定的所有集合的总的元素个数

    SDIFF

    获取给定 set 的差集中的元素

    SDIFF key [key ...]
    
    • 1

    时间复杂度:O(N), N 给定的所有集合的总的元素个数

    SDIFFSTORE

    获取给定 set 的差集中的元素并保存到⽬标 set 中

     SDIFFSTORE destination key [key ...]
    
    • 1

    时间复杂度:O(N), N 给定的所有集合的总的元素个数

    内部编码

    集合类型的内部编码有两种:

    • intset(整数集合):当集合中的元素都是整数并且元素的个数⼩于 set-max-intset-entries 配置 (默认 512 个)时,Redis 会选⽤ intset 来作为集合的内部实现,从⽽减少内存的使⽤。
    • hashtable(哈希表):当集合类型⽆法满⾜ intset 的条件时,Redis 会使⽤ hashtable 作为集合 的内部实现。

    使用场景

    集合类型⽐较典型的使⽤场景是标签(tag)。例如 A ⽤⼾对娱乐、体育板块⽐较感兴趣,B ⽤⼾ 对历史、新闻⽐较感兴趣,这些兴趣点可以被抽象为标签。有了这些数据就可以得到喜欢同⼀个标签 的⼈,以及⽤⼾的共同喜好的标签,这些数据对于增强⽤⼾体验和⽤⼾黏度都⾮常有帮助。 例如⼀个 电⼦商务⽹站会对不同标签的⽤⼾做不同的产品推荐

  • 相关阅读:
    283. 移动零
    vmware vsphere用户权限分级
    Unity 音频插件 - MasterAudio 实现音频管理系统
    哪些不得不记下的汇编指令
    作用域和作用域链
    Netty(5)第一行代码Hello World
    YoloV8改进策略:LSKNet加入到YoloV8中,打造更适合小目标的YoloV8
    基于R的linkET包qcorrplot可视化Mantel test相关性网络热图分析correlation heatmap
    github push 报错的问题记录
    标准C++day2——函数重载、默认形参和引用
  • 原文地址:https://blog.csdn.net/m0_71645055/article/details/136333389