美文网首页
有序集合

有序集合

作者: 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