美文网首页
第二章:API 的理解和使用-集合

第二章:API 的理解和使用-集合

作者: super_pcm | 来源:发表于2019-07-30 14:20 被阅读0次

    2.5 集合

    集合(set)类型也是用来保存多个的字符串元素,但和列表类型不一样的是,集合中不允许有重复元素,并且集合中的元素是无序的,不能通过索引下标获取元素。一个集合最多可以存储4G-1个元素。Redis除了支持集合内的增删改查,同时还支持多个集合取交集、并集、差集,合理地使用好集合类型,能在实际开发中解决很多实际问题。

    2.5.1 命令

    下面将按照集合内和集合间两个维度对集合的常用命令进行介绍。

    1. 集合内操作
    • 添加元素
    sadd key element [element ...]
    

    返回结果为添加成功的元素个数

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

    返回结果为成功删除元素个数

    • 计算元素个数
    scard key
    

    scard的时间复杂度为O(1),它不会遍历集合所有元素,而是直接用Redis内部的变量。

    • 判断元素是否在集合中
    sismember key element
    

    如果给定元素element在集合内返回1,反之返回0

    • 随机从集合返回指定个数元素
    srandmember key [count]
    

    [count]是可选参数,如果不写默认为1

    • 从集合随机弹出元素
    spop key
    

    spop操作可以从集合中随机弹出一个元素

    • 获取所有元素
    smembers key
    

    smembers和lrange、hgetall都属于比较重的命令,如果元素过多存在阻塞Redis的可能性,这时候可以使用sscan来完成,有关sscan命令2.7节会介绍。

    1. 集合间操作
    • 求多个集合的交集
    sinter key [key ...]
    
    • 求多个集合的并集
    suinon key [key ...]
    
    • 求多个集合的差集
    sdiff key [key ...]
    
    • 将交集、并集、差集的结果保存
    sinterstore destination key [key ...]
    suionstore destination key [key ...]
    sdiffstore destination key [key ...]
    

    集合间的运算在元素较多的情况下会比较耗时,所以Redis提供了上面三个命令(原命令+store)将集合间交集、并集、差集的结果保存在destination key中.

    2.5.2 内部编码

    集合类型的内部编码有两种:ntset(整数集合)和hashtable(哈希表)。

    2.5.3 使用场景

    集合类型比较典型的使用场景是标签(tag)。例如一个用户可能对娱乐、体育比较感兴趣,另一个用户可能对历史、新闻比较感兴趣,这些兴趣点就是标签。有了这些数据就可以得到喜欢同一个标签的人,以及用户的共同喜好的标签,这些数据对于用户体验以及增强用户黏度比较重要。例如一个电子商务的网站会对不同标签的用户做不同类型的推荐,比如对数码产品比较感兴趣的人,在各个页面或者通过邮件的形式给他们推荐最新的数码产品,通常会为网站带来更多的利益。
    集合类型的应用场景通常为以下几种:
    ·sadd=Tagging(标签)
    ·spop/srandmember=Random item(生成随机数,比如抽奖)
    ·sadd+sinter=Social Graph(社交需求)

    相关文章

      网友评论

          本文标题:第二章:API 的理解和使用-集合

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