Redis-zset

zset命令与zrangebylex

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
zadd key score1 member1 [score2 member2]
向有序集合添加一个或多个成员,或者更新已存在成员的分数
zcard key
获取有序集合的成员
zcount key min max
计算在有序集合中指定区间分数的成员数
zincrby key increment member
有序集合中对指定成员的分数加上增量 increment
zinterstore destination numkeys key [key ...]
计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 destination 中
zlexcount key min max
在有序集合中计算指定字典区间内成员数量
zrange key start stop [WITHSCORES]
通过索引区间返回有序集合指定区间内的成员
zrangebylex key min max [LIMIT offset count]
在有序集合(sorted set)中按照字典序(lexicographical order)获取指定范围内的成员,
lex结尾的指令是要求分数必须相同,此指令适用于分数相同的有序集合中
zrangebyscore key min max [WITHSCORES] [LIMIT]
通过分数返回有序集合指定区间内的成员----
zrank key member
返回有序集合中指定成员的索引
zrem key member [member ...]
移除有序集合中的一个或多个成员
zremrangebylex key min max
移除有序集合中给定的字典区间的所有成员
zremrangebyrank key start stop
移除有序集合中给定的排名区间的所有成员
zremrangebyscore key min max
移除有序集合中给定的分数区间的所有成员
zrevrange key start stop [WITHSCORES]
返回有序集中指定区间内的成员,通过索引,分数从高到低-----
zrevrrangebyscore key max min [WITHSCORES]
返回有序集中指定分数区间内的成员,分数从高到低排序
zrevrank key member
返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
zscore key member
返回有序集中,成员的分数值
zunionstore destination numkeys key [key ...]
计算给定的一个或多个有序集的并集,并存储在新的 key 中
zscan key cursor [MATCH pattern] [COUNT count]
迭代有序集合中的元素(包括元素成员和元素分值)

zrangebylex参数解析及应用场景

1
zrangebylex key min max [LIMIT offset count]

min和max: 定义了字典序范围的边界值。它们可以是负无穷大(用 - 表示)或正无穷大(用 + 表示),也可以是具体的字符串值,表示有序集合中成员的字典序边界。这两个值必须包含在方括号 [] 或圆括号 () 中,其中方括号表示闭区间(包含边界值),圆括号表示开区间(不包含边界值)。

LIMIT offset count: 这是一个可选参数,用于限制返回结果的数量。offset 表示跳过前面多少个元素,count 表示返回多少个元素。如果包含 LIMIT,则必须输入 offsetcount

返回值:命令返回指定区间内的元素列表。

比较逻辑:成员字符串作为二进制数组的字节数进行比较,默认以ASCII字符集的顺序进行排列。如果成员字符串包含非ASCII字符集(如UTF-8),会影响返回结果。

ASCII码的影响:命令会使用 C 语言的 memcmp() 函数,对集合中的每个成员进行逐个字节的对比,并按照从低到高的顺序返回排序后的集合成员。如果两个字符串有一部分内容是相同的,那么命令会认为较长的字符串比较短的字符串要大。

使用场景:此命令适用于分数相同的有序集合中,LEX结尾的指令要求分数必须相同。

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

例子:

1
2
3
ZRANGEBYLEX zset1 - + LIMIT 0 3
RANGEBYLEX zset2 [aa [c
ZRANGEBYLEX phone - +

详细例子参考:

https://blog.csdn.net/chwshuang/article/details/52848704