天天看点

ZRANGEBYLEX key min max [LIMIT offset count]

ZRANGEBYLEX 返回指定成员区间内的成员,按成员字典正序排序, 分数必须相同。 在某些业务场景中,需要对一个字符串数组按名称的字典顺序进行排序时,可以使用Redis中SortSet这种数据结构来处理。

指令

是否必须

说明

ZRANGEBYLEX

key

有序集合键名称

min

字典中排序位置较小的成员,必须以"["开头,或者以"("开头,可使用"-"代替

max

字典中排序位置较大的成员,必须以"["开头,或者以"("开头,可使用"+"代替

LIMIT

返回结果是否分页,指令中包含LIMIT后offset、count必须输入

offset

返回结果起始位置

count

返回结果数量

提示:

分数必须相同! 如果有序集合中的成员分数有不一致的,返回的结果就不准。

成员字符串作为二进制数组的字节数进行比较。

默认是以ASCII字符集的顺序进行排列。如果成员字符串包含utf-8这类字符集的内容,就会影响返回结果,所以建议不要使用。

默认情况下, “max” 和 “min” 参数前必须加 “[” 符号作为开头。”[” 符号与成员之间不能有空格, 返回成员结果集会包含参数 “min” 和 “max” 。

“max” 和 “min” 参数前可以加 “(“ 符号作为开头表示小于, “(“ 符号与成员之间不能有空格。返回成员结果集不会包含 “max” 和 “min” 成员。

可以使用 “-“ 和 “+” 表示得分最小值和最大值

“min” 和 “max” 不能反, “max” 放前面 “min”放后面会导致返回结果为空

与ZRANGEBYLEX获取顺序相反的指令是ZREVRANGEBYLEX。

源码中采用C语言中<code> memcmp() </code>函数, 从字符的第0位到最后一位进行排序,如果前面部分相同,那么较长的字符串比较短的字符串排序靠后。

指定成员范围的元素列表。

不要在分数不一致的SortSet集合中去使用 ZRANGEBYLEX 指令,因为获取的结果并不准确。

默认情况下, “max” 和 “min” 参数前必须加 “[” 符号作为开头。

“[” 符号与成员之间不能有空格, 返回成员结果集会包含参数 “min” 和 “max” 。

“max” 和 “min” 参数前可以加 “(“ 符号作为开头表示小于, “(“ 符号与成员之间不能有空格。

返回成员结果集不会包含 “max” 和 “min” 成员。

默认是以ASCII字符集的顺序进行排列。

如果成员字符串包含utf-8这类字符集的内容,就会影响返回结果,所以建议不要使用。

我们可以将电话号码存储到SortSet中,然后根据需要来获取号段:

获取所有号码:

获取132号段:

获取132、133号段:

将名称存储到SortSet中:

获取所有人的名字:

获取名字中大写字母A开头的所有人:

获取名字中大写字母C到Z的所有人:

<code></code>

本文作者:陈群

本文来自云栖社区合作伙伴rediscn,了解相关信息可以关注redis.cn网站。

继续阅读