美文网首页NoSQL数据库
Redis数据类型·集合(有序)

Redis数据类型·集合(有序)

作者: 技术老男孩 | 来源:发表于2023-03-20 07:21 被阅读0次

    一、介绍:

    • 在集合类型的基础上有序集合类型为集合中的每个元素都关联了一个分数

    • 这使得我们不仅可以完成插入、删除和判断元素是否存在等集合类型支持的操作,还能够获得分数最高(或最低)的前N个元素、获得指定分数范围内的元素等与分数有关的操作

    • 虽然集合中每个元素都是不同的,但是它们的分数却可以相同。

    • 有序集合类型在某些方面和列表类型有些相似

      • 二者都是有序的
      • 二者都可以获得某一范围的元素
    • 有序集合类型和列表也有着很大的区别,这使得它们的应用场景也是不同的

      • 列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会较慢,所以它更加适合实现如“新鲜事”或“日志”这样很少访问中间元素的应用
      • 有序集合类型是使用散列表和跳跃表(Skip list)实现的,所以即使读取位于中间部分的数据速度也很快
      • 列表中不能简单地调整某个元素的位置,但是有序集合可以(通过更改这个元素的分数)
      • 有序集合要比列表类型更耗费内存

    二、命令:

    命令 说明
    ZADD z value key 加入元素
    ZADD命令的返回值是新加入到集合中的元素个数
    如果该元素已经存在则会用新的分数替换原有的分数
    ZRANGE z startNum endNum 查看集合数据,不带分数
    ZRANGE z startNum endNum WITHSCORES 查看集合数据,带分数
    ZSCORE z key 获得元素的分数
    ZRANGEBYSCORE z startScores endScores WITHSCORES 获得指定分数范围的元素
    ZINCRBY z value key 增加某个元素的分数
    ZCARD z 获得集合中元素的数量
    ZCOUNT z startScores endScores 获得指定分数范围内的元素个数
    ZREM z key 删除元素
    ZRANK z key 获得元素的排名
    升序排列,从0开始计数
    ZREVRANK z key 获得元素的排名
    降序排列,从0开始计数

    三、有序集合类型实践

    • 例:将博客文章按照点击量排序
    127.0.0.1:6379> ZADD posts:page.view 0 post:10:page.view
    (integer) 1
    127.0.0.1:6379> ZINCRBY posts:page.view 1 post:10:page.view
    "1"
    127.0.0.1:6379> ZRANGE posts:page.view 0 -1 WITHSCORES
    1) "post:10:page.view"
    2) "1"
    

    相关文章

      网友评论

        本文标题:Redis数据类型·集合(有序)

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