【问题标题】:ZREMRANGEBYRANK difference between ZREMRANGEBYSCOREZREMRANGEBYRANK 与 ZREMRANGEBYSCORE 的区别
【发布时间】:2017-11-13 14:22:57
【问题描述】:

ZREMRANGEBYRANKZREMRANGEBYSCORE 有什么区别?

请解释一下以下查询:

127.0.0.1:6379> ZRANGEBYSCORE my 1 10 WITHSCORES
1) "b"
2) "1"
3) "a" 
4) "4"

【问题讨论】:

  • 您询问了两个命令,然后给出了第三个命令的示例。您应该编辑您的问题,并更清楚地解释您的问题。
  • @abhishek-kushwaha,下面的回答对你有帮助吗?

标签: redis sortedset


【解决方案1】:

让我们先设置你的ZSet

ZADD myzset 1 "one"
ZADD myzset 2 "two"
ZADD myzset 3 "three"
ZADD myzset 4 "four"
ZADD myzset 5 "five"
ZADD myzset 6 "six"
ZADD myzset 7 "seven"
ZADD myzset 8 "eight"
ZADD myzset 9 "nine"
ZADD myzset 10 "ten"

让我们看看您使用以下命令选择了什么:

127.0.0.1:6379> ZRANGE myzset 0 10 WITHSCORES
 1) "one"
 2) "1"
 3) "two"
 4) "2"
 5) "three"
 6) "3"
 7) "four"
 8) "4"
 9) "five"
10) "5"
11) "six"
12) "6"
13) "seven"
14) "7"
15) "eight"
16) "8"
17) "nine"
18) "9"
19) "ten"
20) "10"

所以它将选择所有元素。

ZREMRANGEBYSCORE

输出

127.0.0.1:6379> ZREMRANGEBYSCORE myzset 5 8 
(integer) 4
127.0.0.1:6379> 
127.0.0.1:6379> ZRANGE myzset 0 10 WITHSCORES
 1) "one"
 2) "1"
 3) "two"
 4) "2"
 5) "three"
 6) "3"
 7) "four"
 8) "4"
 9) "nine"
10) "9"
11) "ten"
12) "10"

因此,最低分数 5 到最高分数 8 的元素将被删除。这里删除了带有分数的元素:5,6,7,8

ZREMRANGEBYRANK

输出

127.0.0.1:6379> ZREMRANGEBYRANK myzset 5 8
(integer) 4
127.0.0.1:6379> 
127.0.0.1:6379> ZRANGE myzset 0 10 WITHSCORES
 1) "one"
 2) "1"
 3) "two"
 4) "2"
 5) "three"
 6) "3"
 7) "four"
 8) "4"
 9) "five"
10) "5"
11) "ten"
12) "10"

因此,最小索引 5 到最大索引 8 的元素将被删除。这里删除的元素:6,7,8,9,其索引为5,6,7,8

根据Redis Commands Documentation

ZREMRANGEBYSCORE键最小值最大值

删除存储在 key 的有序集合中的所有元素,并带有分数 介于最小值和最大值(含)之间。

ZREMRANGEBYRANK键启动停止

删除排序集中存储在 key 中的所有元素 开始和停止。 start 和 stop 都是基于 0 的索引,其中 0 是 得分最低的元素。这些指数可以是负数 数字,它们表示从元素开始的偏移量 最高分。例如:-1 是得分最高的元素, -2 得分第二高的元素,依此类推。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 2011-11-19
    • 2013-03-14
    • 1970-01-01
    • 2018-06-09
    • 2014-08-19
    • 2017-03-27
    相关资源
    最近更新 更多