• Redis教程12-有序集合(sorted set)常用命令使用参考1


    1.ZADD

    ZADD key score member [[score member] [score member] ...]

    将一个或多个 member 元素及其 score 值加入到有序集 key 当中。

    如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。

    score 值可以是整数值或双精度浮点数。

    如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。

    当 key 存在但不是有序集类型时,返回一个错误。

    对有序集的更多介绍请参见 sorted set 。

    在 Redis 2.4 版本以前, ZADD 每次只能添加一个元素。

    可用版本:>= 1.2.0

    时间复杂度:O(M*log(N)), N 是有序集的基数, M 为成功添加的新成员的数量。

    返回值:被成功添加的新成员的数量,不包括那些被更新的、已经存在的成员。

    127.0.0.1:6379> flushdb
    OK
    127.0.0.1:6379>
    127.0.0.1:6379> zadd names 10 tom    // 添加一个元素
    (integer) 1
    127.0.0.1:6379> zadd names 5 jerry 3 zhangsan 7 lisi    // 添加多个元素
    (integer) 3
    127.0.0.1:6379> zrange names 0 -1
    1) "zhangsan"
    2) "jerry"
    3) "lisi"
    4) "tom"
    127.0.0.1:6379> zrange names 0 -1 withscores
    1) "zhangsan"
    2) "3"
    3) "jerry"
    4) "5"
    5) "lisi"
    6) "7"
    7) "tom"
    8) "10"
    127.0.0.1:6379>
    127.0.0.1:6379> zadd names 10 tom    // 加已存在元素,且 score 值不变
    (integer) 0
    127.0.0.1:6379> zrange names 0 -1 withscores
    1) "zhangsan"
    2) "3"
    3) "jerry"
    4) "5"
    5) "lisi"
    6) "7"
    7) "tom"
    8) "10"
    127.0.0.1:6379> zadd names 6 tom    // 添加已存在元素,但是改变 score 值
    (integer) 0
    127.0.0.1:6379> zrange names 0 -1 withscores
    1) "zhangsan"
    2) "3"
    3) "jerry"
    4) "5"
    5) "tom"  // score变了
    6) "6"
    7) "lisi"
    8) "7"
    127.0.0.1:6379>

    2.ZCARD

    ZCARD key

    返回有序集 key 的基数(集合中元素的数量)。

    可用版本:>= 1.2.0

    时间复杂度:O(1)

    返回值:

    当 key 存在且是有序集类型时,返回有序集的基数。
    当 key 不存在时,返回 0 。
    127.0.0.1:6379> zadd names 5 tom 3 jerry 6 zhangsan 2 lisi
    (integer) 4
    127.0.0.1:6379> zcard names
    (integer) 4
    127.0.0.1:6379> exists ages    // 对不存在的key进行zcard
    (integer) 0
    127.0.0.1:6379> zcard ages
    (integer) 0
    127.0.0.1:6379>

    3.ZCOUNT

    ZCOUNT key min max

    返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量。

    关于参数 min 和 max 的详细使用方法,请参考 ZRANGEBYSCORE 命令。

    可用版本:>= 2.0.0

    时间复杂度:O(log(N)+M), N 为有序集的基数, M 为值在 min 和 max 之间的元素的数量。

    返回值:score 值在 min 和 max 之间的成员的数量。

    127.0.0.1:6379> zrange names 0 -1 withscores
    1) "lisi"
    2) "2"
    3) "jerry"
    4) "3"
    5) "tom"
    6) "5"
    7) "zhangsan"
    8) "6"
    127.0.0.1:6379> zcount names 2 3
    (integer) 2
    127.0.0.1:6379> zcount names 7 10
    (integer) 0
    127.0.0.1:6379>

    4.ZINCRBY

    ZINCRBY key increment member

    为有序集 key 的成员 member 的 score 值加上增量 increment 。

    可以通过传递一个负数值 increment ,让 score 减去相应的值,比如 ZINCRBY key -5 member ,就是让 member 的 score 值减去 5 。

    当 key 不存在,或 member 不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member 。

    当 key 不是有序集类型时,返回一个错误。

    score 值可以是整数值或双精度浮点数。

    可用版本:>= 1.2.0

    时间复杂度:O(log(N))

    返回值:member 成员的新 score 值,以字符串形式表示。

    127.0.0.1:6379> zadd names 2 tom 5 jerry 1 zhangsan 3 lisi
    (integer) 4
    127.0.0.1:6379> zrange names 0 -1 withscores
    1) "zhangsan"
    2) "1"
    3) "tom"
    4) "2"
    5) "lisi"
    6) "3"
    7) "jerry"
    8) "5"
    127.0.0.1:6379> zincrby names 5 zhangsan    // zhangsan的score+5
    "6"
    127.0.0.1:6379> zrange names 0 -1 withscores
    1) "tom"
    2) "2"
    3) "lisi"
    4) "3"
    5) "jerry"
    6) "5"
    7) "zhangsan"
    8) "6"
    127.0.0.1:6379> zincrby names 1 wangwu    // wangwu不存在, 相当于zadd
    "1"
    127.0.0.1:6379> zrange names 0 -1 withscores
     1) "wangwu"
     2) "1"
     3) "tom"
     4) "2"
     5) "lisi"
     6) "3"
     7) "jerry"
     8) "5"
     9) "zhangsan"
    10) "6"
    127.0.0.1:6379> zincrby names -1 jerry    // 负数相当于减
    "4"
    127.0.0.1:6379> zrange names 0 -1 withscores
     1) "wangwu"
     2) "1"
     3) "tom"
     4) "2"
     5) "lisi"
     6) "3"
     7) "jerry"
     8) "4"
     9) "zhangsan"
    10) "6"
    127.0.0.1:6379>

    5.ZRANGE

    ZRANGE key start stop [WITHSCORES]

    返回有序集 key 中,指定区间内的成员。

    其中成员的位置按 score 值递增(从小到大)来排序。

    具有相同 score 值的成员按字典序(lexicographical order )来排列。

    如果你需要成员按 score 值递减(从大到小)来排列,请使用 ZREVRANGE 命令

    下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。
    你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
    超出范围的下标并不会引起错误。
    比如说,当 start 的值比有序集的最大下标还要大,或是 start stop 时, ZRANGE 命令只是简单地返回一个空列表。
    另一方面,假如 stop 参数的值比有序集的最大下标还要大,那么 Redis 将 stop 当作最大下标来处理。
    可以通过使用 WITHSCORES 选项,来让成员和它的 score 值一并返回,返回列表以 value1,score1, ..., valueN,scoreN 的格式表示。
    客户端库可能会返回一些更复杂的数据类型,比如数组、元组等。
    可用版本:>= 1.2.0
    时间复杂度:O(log(N)+M), N 为有序集的基数,而 M 为结果集的基数。
    返回值:指定区间内,带有 score 值(可选)的有序集成员的列表。
    127.0.0.1:6379> zrange names 0 -1    // 显示整个有序集合
    1) "zhangsan"
    2) "wangwu"
    3) "tom"
    4) "lisi"
    5) "jerry"
    127.0.0.1:6379> zrange names 0 -1 withscores    // 带着scores一起显示
     1) "zhangsan"
     2) "-8"
     3) "wangwu"
     4) "1"
     5) "tom"
     6) "2"
     7) "lisi"
     8) "3"
     9) "jerry"
    10) "4"
    127.0.0.1:6379> zrange names 0 100    // end超过最大数, 测试 end 下标超出最大下标时的情况
    1) "zhangsan"
    2) "wangwu"
    3) "tom"
    4) "lisi"
    5) "jerry"
    127.0.0.1:6379> zrange names 100 1000    // start超过最大数, 测试当给定区间不存在于有序集时的情况
    (empty list or set)
    127.0.0.1:6379>
  • 相关阅读:
    jQuery 源码解析(二十四) DOM操作模块 包裹元素 详解
    jQuery 源码解析(二十三) DOM操作模块 替换元素 详解
    jQuery 源码解析(二十二) DOM操作模块 复制元素 详解
    jQuery 源码分析(二十一) DOM操作模块 删除元素 详解
    jQuery 源码分析(二十) DOM操作模块 插入元素 详解
    jQuery 源码分析(十九) DOM遍历模块详解
    python 简单工厂模式
    python 爬虫-协程 采集博客园
    vue 自定义image组件
    微信小程序 image组件坑
  • 原文地址:https://www.cnblogs.com/no-celery/p/13716345.html
Copyright © 2020-2023  润新知