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

网友投稿 764 2022-10-17

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

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

1.ZRANGEBYSCORE

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score

具有相同 score 值的成员按字典序(lexicographical order)来排列(该属性是有序集提供的,不需要额外的计算)。

可选的 LIMIT 参数指定返回结果的数量及区间(就像SQL中的 SELECT LIMIT offset, count ),注意当 offset 很大时,定位 offset

可选的 WITHSCORES 参数决定结果集是单单返回有序集的成员,还是将有序集成员及其 score

该选项自 Redis 2.0 版本起可用。

区间及无限

min 和 max 可以是 -inf 和 +inf ,这样一来,你就可以在不知道有序集的最低和最高 score 值的情况下,使用 ZRANGEBYSCORE

默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 ( 符号来使用可选的开区间

举个例子:

127.0.0.1:6379> zrangebyscore names (1 51 < score <= 51) "tom"2) "2"3) "lisi"4) "3"5) "jerry"6) "4"7) "wangwu"8) "5"127.0.0.1:6379> zrangebyscore names (1 (51 < score < 51) "tom"2) "2"3) "lisi"4) "3"5) "jerry"6) "4"

可用版本:>= 1.0.5

时间复杂度:O(log(N)+M), N 为有序集的基数, M

返回值:指定区间内,带有 score

127.0.0.1:6379> zrangebyscore names -inf +inf // 不知道score范围, 显示全部元素1) "zhangsan"2) "tom"3) "lisi"4) "jerry"5) "wangwu"127.0.0.1:6379> zrangebyscore names -inf +inf withscores // 显示score 1) "zhangsan" 2) "1" 3) "tom" 4) "2" 5) "lisi" 6) "3" 7) "jerry" 8) "4" 9) "wangwu"10) "5"127.0.0.1:6379> zrangebyscore names 1 (5 withscores // 显示1<=score<5的成员1) "zhangsan"2) "1"3) "tom"4) "2"5) "lisi"6) "3"7) "jerry"8) "4"127.0.0.1:6379> zrangebyscore names (1 (5 withscores // 显示1

2.ZRANK

ZRANK key member

返回有序集 key 中成员 member 的排名。其中有序集成员按 score

排名以 0 为底,也就是说, score 值最小的成员排名为 0

使用 ZREVRANK 命令可以获得成员按 score

可用版本:>= 2.0.0

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

返回值:

如果 member 是有序集 key 的成员,返回 member

如果 member 不是有序集 key 的成员 或者 key不存在,返回 nil

127.0.0.1:6379> zrange names 0 -1 // 展示所有成员1) "zhangsan"2) "tom"3) "lisi"4) "jerry"5) "wangwu"127.0.0.1:6379> zrank names zhangsan // zhangsan排在第一个(integer) 0127.0.0.1:6379> zrank names wangwu // 排在第五个(integer) 4127.0.0.1:6379> zrank names jack // member不存在, 返回nil(nil)127.0.0.1:6379> zrank ages jack // key不存在, 返回nil(nil)127.0.0.1:6379>

3.ZREM

ZREM key member [member ...]

移除有序集 key

当 key

在 Redis 2.4

可用版本:>= 1.2.0

时间复杂度:O(M*log(N)), N 为有序集的基数, M

返回值:被成功移除的成员的数量,不包括被忽略的成员。

127.0.0.1:6379> zrange names 0 -11) "zhangsan"2) "tom"3) "lisi"4) "jerry"5) "wangwu"127.0.0.1:6379> zrem ages 11 // key不存在, 返回0(integer) 0127.0.0.1:6379> zrem names jack // 成员不存在, 返回0(integer) 0127.0.0.1:6379> zrem names zhangsan // 删除单个成员(integer) 1127.0.0.1:6379> zrange names 0 -11) "tom"2) "lisi"3) "jerry"4) "wangwu"127.0.0.1:6379> zrem names tom lisi jerry // 删除多个成员(integer) 3127.0.0.1:6379> zrange names 0 -11) "wangwu"127.0.0.1:6379>

4.ZREMRANGEBYRANK

ZREMRANGEBYRANK key start stop

移除有序集 key

区间分别以下标参数 start 和 stop 指出,包含 start 和 stop

下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1

你也可以使用负数下标,以 -1 表示最后一个成员, -2

可用版本:>= 2.0.0

时间复杂度:O(log(N)+M), N 为有序集的基数,而 M

返回值:被移除成员的数量。

127.0.0.1:6379> zadd names 1 tom 2 jerry 3 zhangsan 4 lisi 5 wangwu(integer) 5127.0.0.1:6379> zrange names 0 -1 withscores 1) "tom" 2) "1" 3) "jerry" 4) "2" 5) "zhangsan" 6) "3" 7) "lisi" 8) "4" 9) "wangwu"10) "5"127.0.0.1:6379> zremrangebyrank names 0 3 // 移除下标0-3的四个成员(integer) 4127.0.0.1:6379> zrange names 0 -1 // 只剩下一个成员了1) "wangwu"127.0.0.1:6379>

5.ZREMRANGEBYSCORE

ZREMRANGEBYSCORE key min max

移除有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max

自版本2.1.6开始, score 值等于 min 或 max 的成员也可以不包括在内,详情请参见上面 1.ZRANGEBYSCORE

可用版本:>= 1.2.0

时间复杂度:O(log(N)+M), N 为有序集的基数,而 M

返回值:被移除成员的数量。

127.0.0.1:6379> zadd names 1 tom 2 jerry 3 zhangsan 4 lisi 5 wangwu(integer) 5127.0.0.1:6379> zrange names 0 -1 withscores // 显示所有集合成员 1) "tom" 2) "1" 3) "jerry" 4) "2" 5) "zhangsan" 6) "3" 7) "lisi" 8) "4" 9) "wangwu"10) "5"127.0.0.1:6379> zremrangebyscore names 1 2 // 删除1<=score<=2的成员(integer) 2127.0.0.1:6379> zrange names 0 -1 withscores1) "zhangsan"2) "3"3) "lisi"4) "4"5) "wangwu"6) "5"127.0.0.1:6379> zremrangebyscore names (3 (5 // 删除3 zrange names 0 -1 withscores1) "zhangsan"2) "3"3) "wangwu"4) "5"127.0.0.1:6379>

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Netty分布式pipeline管道创建方法跟踪解析
下一篇:Redis教程12-有序集合(sorted set)常用命令使用参考3
相关文章

 发表评论

暂时没有评论,来抢沙发吧~