Redis Zlexcount 命令
Redis Zlexcount 命令在计算有序集合中指定字典区间内成员数量。
语法
redis Zlexcount 命令基本语法如下:
redis 127.0.0.1:6379> ZLEXCOUNT KEY MIN MAX
可用版本
>= 2.8.9
返回值
指定区间内的成员数量。
实例
redis 127.0.0.1:6379> ZADD myzset 0 a 0 b 0 c 0 d 0 e (integer) 5 redis 127.0.0.1:6379> ZADD myzset 0 f 0 g (integer) 2 redis 127.0.0.1:6379> ZLEXCOUNT myzset - + (integer) 7 redis 127.0.0.1:6379> ZLEXCOUNT myzset [b [f (integer) 5
一岁一枯荣
871***318@qq.com
参考地址
我感觉这里解释为“对于一个所有成员的分值都相同的有序集合键 key 来说, 这个命令会返回该集合中, 成员介于 min 和 max 范围内的元素数量”比较好(其他地方找的定义),这里面分值相同才能返回正确的数据。
因为本文中没有说相同分值,我自己做数据的时候就纠结了半天:
现在即便分值不同,返回的结果也是正确的,但是如果中间插入个英文字符结果就有问题了。
一岁一枯荣
871***318@qq.com
参考地址
blessingsoft
ble***ngsoft@163.com
返回是 3 是因为按顺序从 22 开始统计了 22 33 44 beizi>66, 所以是返回 3。
blessingsoft
ble***ngsoft@163.com
Violet Evergarden
981***926@qq.com
有序集合里 LEX 相关的命令,找指定字典区间内成员时,分为两个判定状态,首先找符合第一个条件的成员,找到后从当前位置开始按集合顺序判定成员是否满足第二个条件(此时不再考虑第一个条件),如果发现成员不满足查找会直接结束。
打印lpl看看排序结果。
找第一个条件为(11 第二个条件为[88 的指定区间内成员数量。
通过ZRANGEBYLEX命令可以知道指定区间内的具体成员有哪些。
解释是:首先找满足 >11 的成员,这个成员是 22,然后从 22 开始顺序判断成员是否满足<=88(这时候不考虑是不是>11),发现beizi不满足条件<=88直接结束查找。
这个例子在判断>=44时第一个满足的成员是88,但88不满足<88,所以查找结束,结果为0,而不是从成员44开始,到成员77结束。
Violet Evergarden
981***926@qq.com