美文网首页
有序集合

有序集合

作者: lookphp | 来源:发表于2019-07-12 06:02 被阅读0次

    特点

    -- 元素不可重复
    -- 元素可以排序 (它给每个元素设置一个分数(score)作为排序的依据。 )

    有序集合

    列表、集合、有序集合的异同点

    数据结构 是否允许重复元素 是否有序 有序实现方式 应用场景
    列表 索引下标 消息队列、文章列表、时间轴
    集合 标签、抽奖、社交
    有序集合 分值(score) 排行榜、社交

    命令

    集合内

    • 添加成员 zadd key score member [score member ...]
      有序集合相比集合提供了排序字段score , 但也产生了代价,zadd的时间复杂度为O(log(n)),sadd为O(1)。
    • 计算成员个数 zcard key
    • 计算某个成员的分数 zscore key member
    • 计算成员的排名
      zrank key member
      zrevrank key member
    • 删除成员 zrem key member
    • 增加成员分数 zincrby key increment member
    • 返回指定排名范围的成员
      zrange key start end [withscores]
      zrevrange key start end [withscores]
    • 返回指定分数范围的成员
      zrangebyscore key min max [withscores] [limit offset count]
      zrevrangebyscore key max min [withscores] [limit offset count]
      同时 min 和 max 还支持开区间(小括号)和闭区间(中括号),-inf 和
      +inf 分表代表无限小和无限大。
    • 返回指定分数范围成员个数 zcount key min max
    • 删除指定排名内的升序元素 zremrangebyrank key start end
    • 删除指定分数范围内成员 zremrangebyscore key min max

    集合间的操作

    zadd user:ranking:1 1 kris 91 mike 200 frank 220 tim 250 martin 251 tom
    zadd user:ranking:2 8 james 77 mike 625 martin 888 tom

    • 交集
    • 并集

    内部编码

    • ziplist(压缩列表)
    • skiplist (跳跃表)

    使用场景

    • 添加用户赞数
    • 取消用户赞数
    • 展示获取用户赞数最多的十个用户
    • 展示用户信息及用户分数

    相关文章

      网友评论

          本文标题:有序集合

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