非常教程

Redis参考手册

排序集 | Sorted Sets

zrangebylex

ZRANGEBYLEX key min max [LIMIT offset count]

自2.8.9起可用。

时间复杂度: O( log(N)+ M),其中 N 是有序集合中元素的数量,M 是返回元素的数量。如果 M 是常量(例如,总是要求使用 LIMIT 的前10个元素),则可以将其视为 O( log(N))。

当排序集中的所有元素都以相同的分数插入时,为了强制执行词典排序,此命令将返回排序集中的所有元素,其key值介于min和之间max

如果排序集中的元素具有不同的分数,则返回的元素是未指定的。

使用memcmp() C 函数逐字节地比较元素被认为是从低到高的字符串排序。如果公共部分相同,则较长的字符串被认为大于较短的字符串。

可选LIMIT参数可用于仅获取匹配元素的范围(与 SELECT LIMIT 偏移量类似,SQL 中的计数类似)。请记住,如果offset很大,则需要offset在获取要返回的元素之前遍历元素的排序集,这可能会增加 O(N)时间复杂度。

如何指定间隔

有效的开始停止必须以(或开始[,以便指定范围项目是分别独占的还是包含的。的特殊值+-用于启动停止具有特殊意义或正无穷和负无穷大的字符串,所以例如命令 ZRANGEBYLEX myzset - + 保证返回的所有元素的有序集合,如果所有的元素都以同样的比分。

字符串比较的细节

字符串被比较为二进制字节数组。由于指定了 ASCII 字符集,这意味着通常这也会以明显的字典方式比较正常的 ASCII 字符。但是,如果使用非纯 ASCII 字符串(例如 utf8 字符串),则不是这样。

但是,用户可以对编码字符串应用转换,以便插入到有序集合中的元素的第一部分将按照用户对特定应用程序的需求进行比较。例如,如果我想添加将以不区分大小写的方式进行比较的字符串,但我仍然想在查询时检索实际案例,则可以按以下方式添加字符串:

ZADD autocomplete 0 foo:Foo 0 bar:BAR 0 zap:zap

由于每个元素中的第一个标准化部分(在冒号字符之前),我们强制进行给定的比较,但是在使用 ZRANGEBYLEX 进行查询之后,应用程序可以向用户显示冒号后面的字符串的第二部分。

比较的二进制特性允许使用排序集作为通用索引,例如元素的第一部分可以是64位大端数:由于大端数在初始位置中具有最高有效字节,二进制比较将匹配数字的数字比较。这可以用来实现64位值的范围查询。如下例所示,在前8个字节后,我们可以存储我们实际索引的元素的值。

返回值

阵列回复:指定分数范围内的元素列表。

例子

redis> ZADD myzset 0 a 0 b 0 c 0 d 0 e 0 f 0 g (integer) 7 redis> ZRANGEBYLEX myzset - [c 1) "a" 2) "b" 3) "c" redis> ZRANGEBYLEX myzset - (c 1) "a" 2) "b" redis> ZRANGEBYLEX myzset [aaa (g 1) "b" 2) "c" 3) "d" 4) "e" 5) "f"

Redis

Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。 它通常被称为数据结构服务器,因为值( value )可以是 字符串( String ), 哈希(Map),列表(list),集合( sets ) 和 有序集合( sorted sets )等类型。

主页 https://redis.io/
源码 https://github.com/antirez/redis
发布版本 4.0.2

Redis目录

1.集合 | Cluster
2.连接 | Connection
3.Geo
4.Hashes
5.HyperLogLog
6.键 | Keys
7.列表 | Lists
8.Pub/Sub
9.脚本 | Scripting
10.服务器 | Server
11.设定 | Sets
12.排序集 | Sorted Sets
13.字符串 | Strings
14.事务 | Transactions
15.Redis Dump 命令
16.Redis DEL 命令
17.Redis 键(key)
18.Redis 命令
19.Redis 配置
20.Redis 简介
21.Redis RANDOMKEY 命令
22.Redis TTL 命令
23.Redis Pttl 命令
24.Redis PERSIST 命令
25.Redis Move 命令
26.Redis PEXPIREAT 命令
27.Redis Keys 命令
28.Redis Expireat 命令
29.Redis Expire 命令
30.Redis EXISTS 命令
31.Redis Mget 命令
32.Redis Getbit 命令
33.Redis Getset 命令
34.Redis Getrange 命令
35.Redis Get 命令
36.Redis SET 命令
37.Redis 字符串(String)
38.Redis Type 命令
39.Redis Renamenx 命令
40.Redis Rename 命令
41.Redis Incrby 命令
42.Redis Incr 命令
43.Redis Psetex 命令
44.Redis Msetnx 命令
45.Redis Mset 命令
46.Redis Strlen 命令
47.Redis Setrange 命令
48.Redis Setnx 命令
49.Redis Setex 命令
50.Redis Setbit 命令
51.Redis Hincrby 命令
52.Redis Hgetall 命令
53.Redis Hget 命令
54.Redis Hexists 命令
55.Redis Hdel 命令
56.Redis 哈希(Hash)
57.Redis Append 命令
58.Redis Decrby 命令
59.Redis Decr 命令
60.Redis Incrbyfloat 命令
61.Redis Blpop 命令
62.Redis 列表(List)
63.Redis Hvals 命令
64.Redis Hsetnx 命令
65.Redis Hset 命令
66.Redis Hmset 命令
67.Redis Hmget 命令
68.Redis Hlen 命令
69.Redis Hkeys 命令
70.Redis Hincrbyfloat 命令
71.Redis Lrem 命令
72.Redis Lrange 命令
73.Redis Lpushx 命令
74.Redis Lpush 命令
75.Redis Lpop 命令
76.Redis Llen 命令
77.Redis Linsert 命令
78.Redis Lindex 命令
79.Redis Brpoplpush 命令
80.Redis Brpop 命令
81.Redis Sdiff 命令
82.Redis Scard 命令
83.Redis Sadd 命令
84.Redis 集合(Set)
85.Redis Rpushx 命令
86.Redis Rpush 命令
87.Redis Rpoplpush 命令
88.Redis Rpop 命令
89.Redis Ltrim 命令
90.Redis Lset 命令
91.Redis Sunion 命令
92.Redis Srem 命令
93.Redis Srandmember 命令
94.Redis Spop 命令
95.Redis Smove 命令
96.Redis Smembers 命令
97.Redis Sismember 命令
98.Redis Sinterstore 命令
99.Redis Sinter 命令
100.Redis Sdiffstore 命令