1.redis 命令 Zremrangebyscore/Zrevrangebyscore (已弃用)/Zscan/Zremrangebylex
移除有序集合中给定的分数区间的所有成员
语法
ZREMRANGEBYSCORE key min max
可用版本:
1.2.0
时间复杂度:
O(log(N)+M),其中 N 是排序集中的元素数,M 是操作删除的元素数。
ACL 类别:
@write, @sortedset, @slow
删除排序集中存储的所有元素,key其分数介于 min和max(包括)之间。
#返回
整数回复:删除的元素数。
#例子
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZREMRANGEBYSCORE myzset -inf (2 #删除分数值在负无穷到小于2之前的元素。
(integer) 1
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "two"
2) "2"
3) "three"
4) "3"
redis>
Zscan
迭代有序集合中的元素(包括元素成员和元素分值)
语法
ZSCAN key cursor [MATCH pattern] [COUNT count]
可用版本:
2.8.0
时间复杂度:
每次调用 O(1)。O(N) 用于完整的迭代,包括足够的命令调用以使光标返回 0。N 是集合内的元素数。
192.168.1.80:6400> zscan zset3 0 MATCH * COUNT 11 #查看 zset3 这个有序记录的元素和分数。0是游标。
1) "0"
2) 1) "one"
2) "5"
3) "three"
4) "9"
5) "two"
6) "10"
Zrevrangebyscore (已弃用)
返回有序集中指定分数区间内的成员,分数从高到低排序
从 Redis 版本 6.2.0 开始,此命令被视为已弃用。
可替换为ZRANGE在迁移或编写新代码时使用REV和BYSCORE参数。
语法
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
可用版本:
2.2.0
时间复杂度:
O(log(N)+M),其中 N 是排序集中的元素数,M 是返回的元素数。如果 M 是常数(例如,总是用 LIMIT 要求前 10 个元素),你可以认为它是 O(log(N))。
ACL 类别:
@read, @sortedset, @slow
返回排序集合中的所有元素,key其分数在max 和min之间(包括分数等于max或min的元素)。
与排序集的默认排序相反,对于此命令,元素被认为是从高到低排序的。
具有相同分数的元素以相反的字典顺序返回。
除了倒序,ZREVRANGEBYSCORE 与 ZRANGEBYSCORE 类似.
#返回
数组回复:指定分数范围内的元素列表(可选地与他们的分数)。
#例子
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZREVRANGEBYSCORE myzset +inf -inf #找出分数在正无穷和负无穷之间的所有元素。
1) "three"
2) "two"
3) "one"
redis> ZREVRANGEBYSCORE myzset 2 1
1) "two"
2) "one"
redis> ZREVRANGEBYSCORE myzset 2 (1 #(1,2],大于1,小于等于2.
1) "two"
redis> ZREVRANGEBYSCORE myzset (2 (1 #(1,2),大于1,小于2. 分数是小数时才会返回值。
(empty array)
redis>
#历史
从 Redis 版本 2.1.6 开始:min并且max可以是独占的。
#反馈
Zremrangebylex
移除有序集合中给定的字典区间的所有成员
语法
ZREMRANGEBYLEX key min max
可用版本:
2.8.9
时间复杂度:
O(log(N)+M),其中 N 是排序集中的元素数,M 是操作删除的元素数。
ACL 类别:
@write, @sortedset, @slow
当以相同的分数插入已排序集中的所有元素时,为了强制按字典顺序,此命令删除存储在min和max指定的字典范围之间的key处的已排序集中的所有元素。
min和max的含义与ZRANGEBYLEX命令的含义相同。类似地,如果使用相同的min和max参数调用ZRANGEBYLEX,则此命令实际上会删除这些元素。
#返回
整数回复:删除的元素数。
#例子
redis> ZADD myzset 0 aaaa 0 b 0 c 0 d 0 e
(integer) 5
redis> ZADD myzset 0 foo 0 zap 0 zip 0 ALPHA 0 alpha
(integer) 5
redis> ZRANGE myzset 0 -1
1) "ALPHA"
2) "aaaa"
3) "alpha"
4) "b"
5) "c"
6) "d"
7) "e"
8) "foo"
9) "zap"
10) "zip"
redis> ZREMRANGEBYLEX myzset [alpha [foo #删除 alpha 到 foo之间的元素。
(integer) 6
redis> ZRANGE myzset 0 -1
1) "ALPHA"
2) "aaaa"
3) "zap"
4) "zip"
redis>
[a[z 表示从 "a" 开始到 "z" 结束(包含 "a" 和 "z")
192.168.1.80:6400> zrange myzset 0 -1 withscores