ZREMRANGEBYRANK
和ZREMRANGEBYSCORE
之间的区别是什么?
向我解释以下查询:
127.0.0.1:6379> ZRANGEBYSCORE my 1 10 WITHSCORES
1) "b"
2) "1"
3) "a"
4) "4"
答案 0 :(得分: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 min max
使用分数删除存储在key中的有序集合中的所有元素 在最小和最大(包括)之间。
ZREMRANGEBYRANK 按键开始停止
删除存储在key中的排序集中的所有元素,其中等级为 开始和停止。 start和stop都是基于0的索引,0为 分数最低的元素。这些指数可能是负数 数字,它们表示从元素开始的偏移量 得分最高。例如:-1是得分最高的元素, -2分数第二高的元素,等等。