예배 규칙서 찾다
Cluster cluster addslots(集群 槽位) cluster count failure reports(集群计数失败报告) cluster countkeysinslot cluster delslots cluster failover cluster forget cluster getkeysinslot cluster info cluster keyslot(集群键槽) cluster meet cluster nodes(集群节点) cluster replicate(集群复制) cluster reset(集群重置) cluster saveconfig cluster set config epoch cluster setslot cluster slaves cluster slots readonly readwrite Connection auth echo ping quit select swapdb Geo geoadd geodist geohash geopos georadius georadiusbymember Hashes hdel hexists hget hgetall hincrby hincrbyfloat hkeys hlen hmget hmset hscan hset hsetnx hstrlen hvals HyperLogLog pfadd pfcount pfmerge Keys del dump exists expire expireat keys migrate move object persist pexpire pexpireat pttl randomkey rename renamenx restore scan sort touch ttl type unlink wait Lists blpop brpop brpoplpush lindex linsert llen lpop lpush lpushx lrange lrem lset ltrim rpop rpoplpush rpush rpushx Pub/Sub psubscribe publish pubsub punsubscribe subscribe unsubscribe Scripting eval evalsha script debug script exists script flush script kill script load Server bgrewriteaof bgsave client getname client kill client list client pause client reply client setname command command count command getkeys command info config get config resetstat config rewrite config set dbsize debug object debug segfault flushall flushdb info lastsave monitor role save shutdown slaveof slowlog time Sets sadd scard sdiff sdiffstore sinter sinterstore sismember smembers smove spop srandmember srem sscan sunion sunionstore Sorted Sets zadd zcard zcount zincrby zinterstore zlexcount zrange zrangebylex zrangebyscore zrank zrem zremrangebylex zremrangebyrank zremrangebyscore zrevrange zrevrangebylex zrevrangebyscore zrevrank zscan zscore zunionstore Strings append bitcount bitfield bitop bitpos decr decrby get getbit getrange getset incr incrby incrbyfloat mget mset msetnx psetex set setbit setex setnx setrange strlen Transactions discard exec multi unwatch watch
문자

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"

이전 기사: 다음 기사: