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

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

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

2.6 有序集合

有序集合相对于哈希、列表、集合来说会有一点点陌生,但既然叫有序集合,那么它和集合必然有着联系,它保留了集合不能有重复成员的特性,但不同的是,有序集合中的元素可以排序。但是它和列表使用索引下标作为排序依据不同的是,它给每个元素设置一个分数(score)作为排序的依据.有序集合提供了获取指定分数和元素范围查询、计算成员排名等功能,合理的利用有序集合,能帮助我们在实际开发中解决很多问题。
有序集合中的元素不能重复,但是score可以重复,就和一个班里的同学学号不能重复,但是考试成绩可以相同。


2.6.1 命令

本节依旧按照集合内和集合外两个维度对有序集合的命令进行介绍。

  1. 集合内
  • 添加成员
zadd key score member [score member ...]

有序集合相比集合提供了排序字段,但是也产生了代价,zadd的时间复杂度为O(log(n)),sadd的时间复杂度为O(1)。

  • 计算成员个数
zcard key
  • 计算某个成员的分数
zscore key member
  • 计算成员的排名
zrank key member
zrevrank key member
  • 删除成员
zrem key member [member ...]
  • 增加成员的分数
zincrby key increment member
  • 返回指定排名范围的成员
zrange key start end [withscores]
zrevrange key start end [withscores]

有序集合是按照分值排名的,zrange是从低到高返回,zrevrange反之。

  • 返回指定分数范围的成员
zrangebyscore key min max [withscores] [limit offset count]
zrevrangebyscore key max min [withscores] [limit offset count]

其中zrangebyscore按照分数从低到高返回,zrevrangebyscore反之.

  • 返回指定分数范围成员个数
zcount key min max
  • 删除指定排名内的升序元素
zremrangebyrank key start end
  • 删除指定分数范围的成员
zremrangebyscore key min max
  1. 集合间的操作
  • 交集
zinterstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]
  • 并集
zunionstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]

2.6.2 内部编码

有序集合类型的内部编码有两种:ziplist(压缩列表)和skiplist(跳跃表)

2.6.3 使用场景

有序集合比较典型的使用场景就是排行榜系统。例如视频网站需要对用户上传的视频做排行榜,榜单的维度可能是多个方面的:按照时间、按照播放数量、按照获得的赞数。本节使用赞数这个维度,记录每天用户上传视频的排行榜。

相关文章

网友评论

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

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