`
gitzhangyl
  • 浏览: 19544 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Redis命令-有序集合-zrangebylex

阅读更多

 

原文

http://redis.io/commands/zrangebylex

 

简介

Return a range of members in a sorted set, by lexicographical range.

 

根据词典范围,返回有序集合中一定范围内的成员。

 

语法

ZRANGEBYLEX key min max [LIMIT offset count]

 

版本

Available since 2.8.9.

 

自2.8.9版本可用。

 

时间复杂度

Time complexity: O(log(N)+M) with N being the number of elements in the sorted set and M the number of elements being returned. If M is constant (e.g. always asking for the first 10 elements with LIMIT), you can consider it O(log(N)).

 

O(log(N)+M):N是有序集合中元素的数量,M是返回的元素的数量。如果M是常量,你可以认为时间复杂度为O(log(N))。

 

描述

When all the elements in a sorted set are inserted with the same score, in order to force lexicographical ordering, this command returns all the elements in the sorted set at key with a value between min and max.

 

当有序集合中插入的所有元素的分数都相同时,为了强制词典排序,这个命令返回值在min和max之间的所有元素。

 

If the elements in the sorted set have different scores, the returned elements are unspecified.

 

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

 

The elements are considered to be ordered from lower to higher strings as compared byte-by-byte using the memcmp() C function. Longer strings are considered greater than shorter strings if the common part is identical.

 

这些元素被认为是从更低到更高字符串排序,通过memcmp()函数按字节比较。如果公共部分是一样的,更长的字符串被认为大于更短的字符串。

 

The optional LIMIT argument can be used to only get a range of the matching elements (similar to SELECT LIMIT offset, count in SQL). Keep in mind that if offset is large, the sorted set needs to be traversed for offset elements before getting to the elements to return, which can add up to O(N) time complexity.

 

LIMIT参数可以被用于仅仅获取一定范围内匹配的元素(类似于SQL语句SELECT LIMIT offset, count)。请牢记,如果offset比较大,在获取返回的元素之前,有序集合需要穿过offset个元素,时间复杂度总计为O(N)。

 

How to specify intervals

Valid start and stop must start with ( or [, in order to specify if the range item is respectively exclusive or inclusive. The special values of + or - for start and stop have the special meaning or positively infinite and negatively infinite strings, so for instance the command ZRANGEBYLEX myzset - + is guaranteed to return all the elements in the sorted set, if all the elements have the same score.

 

如果需要指定范围边界是排除在外或包含在内,有效的start和stop必须以(或[开始。如果start和stop指定为+或-,表示正无穷大或负无穷大字符串,例如ZRANGEBYLEX myzset - +,如果所有元素有相同的分数,可以保证返回有序集合中所有元素。

 

Details on strings comparison

Strings are compared as binary array of bytes. Because of how the ASCII character set is specified, this means that usually this also have the effect of comparing normal ASCII characters in an obvious dictionary way. However this is not true if non plain ASCII strings are used (for example utf8 strings).

 

However the user can apply a transformation to the encoded string so that the first part of the element inserted in the sorted set will compare as the user requires for the specific application. For example if I want to add strings that will be compared in a case-insensitive way, but I still want to retrieve the real case when querying, I can add strings in the following way:

 

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

 

Because of the first normalized part in every element (before the colon character), we are forcing a given comparison, however after the range is queries using ZRANGEBYLEX the application can display to the user the second part of the string, after the colon.

 

The binary nature of the comparison allows to use sorted sets as a general purpose index, for example the first part of the element can be a 64 bit big endian number: since big endian numbers have the most significant bytes in the initial positions, the binary comparison will match the numerical comparison of the numbers. This can be used in order to implement range queries on 64 bit values. As in the example below, after the first 8 bytes we can store the value of the element we are actually indexing.

 

返回值

Array reply: list of elements in the specified score range.

 

Array:指定范围的元素列表。

 

例子

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>

 

分享到:
评论

相关推荐

    PyPI 官网下载 | redis-py-cluster-1.1.0.tar.gz

    2. **命令一致性**:尽管Redis集群可能涉及多个节点,但`redis-py-cluster`确保了跨节点操作的原子性和一致性。 3. **数据持久化**:Redis-Py-Cluster支持Redis的数据持久化选项,如RDB快照和AOF日志,以保证数据在...

    关于 phpredis2.2.5-5.5 ts-vc11-x64 的分享版本

    PHPRedis 提供了丰富的 API,使得开发者能够通过 PHP 代码直接调用 Redis 的各种命令,如设置和获取键值、执行事务、操作集合、有序集合、哈希表等。由于是 C 扩展,它的性能相对较高,延迟较低,适合处理大量数据...

    Redis-x64-5.0.14.1

    - **数据结构**:支持字符串、哈希、列表、集合、有序集合等多种数据结构。 - **事务**:提供原子性操作,确保一组命令要么全部执行,要么全部不执行。 - **发布/订阅**:支持消息订阅和发布功能,可用于实现简单...

    redis+redis-desktop-manager-0.8.3.3850+笔记

    Redis,全名Remote Dictionary Server,是一款开源的高性能键值对存储系统,它支持数据的持久化,可以将内存中的数据保存在磁盘上,同时提供了丰富的数据类型,如字符串、哈希表、列表、集合和有序集合。Redis以网络...

    Another-Redis-Desktop-Manager-v1.5.5 | redis 桌面视图工具 |windows

    2. **键值浏览**:工具提供了清晰的键值列表视图,支持按照不同数据类型(如字符串、哈希、列表、集合、有序集合)显示和编辑数据。用户可以直接在界面上输入命令,或者使用提供的快捷操作来添加、修改或删除键值。 ...

    redis-windows-7.2.4.zip

    - **键值存储**:Redis基于键值对的数据结构,键和值可以是字符串、哈希、列表、集合、有序集合等多种类型。 - **内存存储**:Redis默认将所有数据存储在内存中,提供极快的读写速度,但也可以通过配置进行持久化...

    Redis稳定版 Redis-x64-5.0.14.1.zip

    1. **数据类型**: Redis支持五大数据类型:字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set),这些类型为各种应用场景提供了丰富的选择。 2. **持久化**: Redis提供了两种主要的持久化...

    redis-windows-7.0.10.zip

    Redis的核心组件包括`redis-server.exe`(服务器进程)、`redis-cli.exe`(命令行客户端)以及`redis-benchmark.exe`(性能测试工具)等。用户需要通过`redis-server.exe`启动服务,并通过`redis-cli.exe`进行交互式...

    Another-Redis-Desktop-Manager.1.6.1

    通过此工具,用户可以直观地查看Redis中的键值对,进行键的增删改查,支持多种数据类型如字符串、哈希、列表、集合和有序集合的管理。 在标签“redis”中,我们可以看到RDM与Redis服务器的紧密关联。它支持连接到...

    redis-desktop-manager-0.9.0.616.exe、Redis-x64-3.0.504

    Redis是一个基于键值对的NoSQL数据库,支持多种数据结构,如字符串、哈希、列表、集合和有序集合。这个zip文件包含以下组成部分: - `redis-server.exe`:Redis服务器进程,用于接收客户端请求并处理数据操作。 - ...

    redis-windows-7.0.8.zip

    它的设计目标是速度极快,且支持多种数据结构,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)以及有序集合(sorted sets)。Redis在内存中存储数据,并可定期或按需将数据持久化到磁盘,以确保...

    redis-7.0.11-aarch64.tar.gz

    8. **备份与恢复**:了解如何使用`redis-cli`的`SAVE`和`BGSAVE`命令进行数据持久化,以及如何利用`RDB`和`AOF`两种持久化方式。同时,学习如何使用`redis-cli`的`RESTORE`命令进行数据恢复。 9. **监控与性能优化*...

    redis-mac-6.2.2

    它的数据类型包括字符串、哈希、列表、集合和有序集合,使得它能够适应各种复杂的应用场景。此外,Redis还支持事务、发布/订阅、lua脚本等功能,进一步增强了其功能性和灵活性。 总的来说,"redis-mac-6.2.2"是一个...

    Another-Redis-Desktop-Manager.1.5.5

    标题 "Another-Redis-Desktop-Manager.1.5.5" 指向的是一款名为 Another Redis Desktop Manager 的软件,其版本号为 1.5.5。这是一款图形用户界面(GUI)工具,专为管理和操作 Redis 数据库而设计。Redis 是一个开源...

    redis-stack-server-6.2.6-v7.rhel7.x86-64.tar.gz

    1. 解压文件:使用 `tar -zxvf redis-stack-server-6.2.6-v7.rhel7.x86-64.tar.gz` 命令解压。 2. 配置环境:编辑 `/etc/redis/redis.conf` 文件,根据需求调整配置。 3. 启动服务:使用 `systemctl start redis` 或...

    redis-desktop-manager-0.9.3.817

    2. **键值浏览**:查看和编辑Redis中的键值对,包括字符串、哈希、列表、集合和有序集合等各种数据类型。 3. **命令执行**:在界面上直接输入Redis命令,查看命令结果。 4. **数据导入导出**:将数据从文件导入Redis...

    redis-desktop-manager-0.8.8.384.exe安装包

    Redis以其高性能、低延迟以及丰富的数据结构(如字符串、哈希、列表、集合、有序集合等)而闻名,广泛应用于各种场景,包括实时统计、社交网络、内容推荐系统等。 Redis Desktop Manager是为简化Redis管理而开发的...

    redis64-3.0.501

    此版本在性能和稳定性上进行了优化,支持多种数据结构如字符串、哈希表、列表、集合和有序集合,同时提供了丰富的命令操作。在Windows平台上,Redis通过msi安装包提供,这使得在Windows系统中部署和管理Redis变得...

    redis-windows-7.2.5.zip

    在Windows环境下安装Redis,可以借助于提供的压缩包"redis-windows-7.2.5.zip"进行。以下是关于Redis及其在Windows上的安装和使用的详细知识: 1. **Redis特性** - **键值对存储**:Redis的核心是键值对模型,其中...

    redis-6.2.6-x64-windows.zip

    5. **命令行客户端**:压缩包可能还包括`redis-cli.exe`,这是一个命令行接口工具,允许用户与Redis服务器交互,执行各种命令,如GET、SET、DEL等。 6. **持久化机制**:Redis支持两种持久化方式,RDB(快照)和AOF...

Global site tag (gtag.js) - Google Analytics