• 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>
  • 相关阅读:
    中等疾病活动度的RA患者持续传统治疗的结果:来自ERAN的数据
    中信国健临床通讯2011年1月第1期目录
    影像学是否应该纳入RA缓解标准?传统评分与修订后复合评分和影像学评估的比较
    RA患者妊娠期使用依那西普维持缓解
    TNFα拮抗剂减少脊髓损伤大鼠神经元和少突胶质细胞的凋亡
    新近起病的活动性RA患者中达标治疗与常规治疗的疗效比较:来自GUEPARD试验和ESPOIR队列的数据
    TNF抑制剂相关的肿瘤风险:阿达木单抗、依那西普和英夫利昔单抗随机对照试验的荟萃分析
    依那西普治疗日本RA患者的安全性与疗效的上市后监察
    依那西普与柳氮磺吡啶治疗强直性脊柱炎的临床疗效与安全性比较:一项随机双盲研究(ASCEND试验)
    POJ3450 Corporate Identity KMP+枚举
  • 原文地址:https://www.cnblogs.com/no-celery/p/13716345.html
Copyright © 2020-2023  润新知