学习 Redis5 这一篇就够了---1

420 阅读24分钟

学习 Redis5 这一篇就够了、

配套资料,免费下载链接: pan.baidu.com/s/1Y8gVdeZr… 提取码: zgus 复制这段内容后打开百度网盘手机 App,操作更方便哦第一章 Redis 概述 1.1、Redis 介绍 Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。

配套资料,免费下载 链接: pan.baidu.com/s/1Y8gVdeZr… 提取码: zgus 复制这段内容后打开百度网盘手机 App,操作更方便哦

第一章 Redis 概述

1.1、Redis 介绍

Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。Redis 是 NoSQL 技术阵营中的一员,它通过多种键值数据类型来适应不同场景下的存储需求,借助一些高层级的接口使其可以胜任如缓存、队列系统的不同角色

1.2、Redis 特性

  • Redis 特点:
    • Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
    • Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list、set、zset、hash 等数据结构的存储
    • Redis 支持数据的备份,即 master-slave 模式的数据备份
  • Redis 优势:
    • 性能极高:Redis 能读的速度是 110000 次 / s,写的速度是 81000 次 / s
    • 丰富的数据类型:Redis 支持二进制案例的 Strings、Lists、Hashes、Sets 及 Ordered Sets 数据类型操作
    • 原子性:Redis 的所有操作都是原子性的,同时 Redis 还支持对几个操作全并后的原子性执行
    • 丰富的特性:Redis 还支持 publish/subscribe、通知、key 过期等等特性

1.3、Redis 官网

官方网址:redis.io/

第二章 Redis 下载及安装

2.1、准备编译器

[root@caochenlei ~]

2.2、下载并安装

[root@caochenlei ~]
[root@caochenlei ~]
[root@caochenlei ~]
[root@caochenlei redis-5.0.9]
[root@caochenlei redis-5.0.9]
[root@caochenlei redis-5.0.9]

2.3、启动服务器

[root@caochenlei redis-5.0.9]
[root@caochenlei redis]

daemonize yes
[root@caochenlei redis]

2.4、启动客户端

[root@caochenlei redis]

2.5、文件的介绍

  • redis-server :Redis 服务器
  • redis-cli :Redis 客户端
  • redis-sentinel :Redis 哨兵端
  • redis-benchmark:Redis 性能测试工具
  • redis-check-aof :AOF 文件修复工具
  • redis-check-rdb :RDB 文件检索工具

第三章 Redis 类型及操作

3.1、String 类型及常见操作

String 类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如 JPEG 图像数据或 Json 对象描述信息等,在 Redis 中字符串类型的 Value 最多可以容纳的数据长度是 512M。

  • SET key value

设定该 Key 持有指定的字符串 Value,如果该 Key 已经存在,则覆盖其原有值。

返回值:该命令不会失败,始终返回 OK。

  • GET key

获取指定 Key 的 Value。如果与该 Key 关联的 Value 不是 String 类型,Redis 将返回错误信息,因为 GET 命令只能用于获取 String Value。

返回值:与该 Key 相关的 Value,如果该 Key 不存在,则返回 nil。

  • MSET key value [key value …]

该命令原子性的完成参数中所有 key/value 的设置操作,其具体行为可以看成是多次迭代执行 SET 命令。

返回值:该命令不会失败,始终返回 OK。

  • MGET key [key …]

返回所有指定 Keys 的 Values,如果其中某个 Key 不存在,或者其值不为 String 类型,该 Key 的 Value 将返回 nil。

返回值:返回一组指定 Keys 的 Values 的列表。

  • SETNX key value

如果指定的 Key 不存在,则设定该 Key 持有指定字符串 Value,此时其效果等价于 SET 命令。相反,如果该 Key 已经存在,该命令将不做任何操作并返回。

返回值:1 表示设置成功,否则 0。

  • MSETNX key value [key value …]

该命令原子性的完成参数中所有 key/value 的设置操作,其具体行为可以看成是多次迭代执行 SETNX 命令。然而这里需要明确说明的是,如果在这一批 Keys 中有任意一个 Key 已经存在了,那么该操作将全部回滚,即所有的修改都不会生效。

返回值:1 表示所有 Keys 都设置成功,0 则表示没有任何 Key 被修改。

  • APPEND key value

如果该 Key 已经存在,APPEND 命令将参数 Value 的数据追加到已存在 Value 的末尾。如果该 Key 不存在,APPEND 命令将会创建一个新的 Key/Value。

返回值:追加后 Value 的长度。

  • DECR key

将指定 Key 的 Value 原子性的递减 1。如果该 Key 不存在,其初始值为 0,在 decr 之后其值为 - 1。如果 Value 的值不能转换为整型值,如 Hello,该操作将执行失败并返回相应的错误信息。

返回值:递减后的 Value 值。

  • INCR key

将指定 Key 的 Value 原子性的递增 1。如果该 Key 不存在,其初始值为 0,在 incr 之后其值为 1。如果 Value 的值不能转换为整型值,如 Hello,该操作将执行失败并返回相应的错误信息。

返回值:递增后的 Value 值。

  • DECRBY key decrement

将指定 Key 的 Value 原子性的减少 decrement。如果该 Key 不存在,其初始值为 0,在 decrby 之后其值为 - decrement。如果 Value 的值不能转换为整型值,如 Hello,该操作将执行失败并返回相应的错误信息。注意:该操作的取值范围是 64 位有符号整型。

返回值:减少后的 Value 值。

  • INCRBY key increment

将指定 Key 的 Value 原子性的增加 increment。如果该 Key 不存在,其初始值为 0,在 incrby 之后其值为 increment。如果 Value 的值不能转换为整型值,如 Hello,该操作将执行失败并返回相应的错误信息。注意:该操作的取值范围是 64 位有符号整型。

返回值:增加后的 Value 值。

  • GETSET key value

原子性的设置该 Key 为指定的 Value,同时返回该 Key 的原有值。和 GET 命令一样,该命令也只能处理 String Value,否则 Redis 将给出相关的错误信息。

返回值:返回该 Key 的原有值,如果该 Key 之前并不存在,则返回 nil。

  • STRLEN key

返回指定 Key 的字符值长度,如果 Value 不是 String 类型,Redis 将执行失败并给出相关的错误信息。

返回值:指定 Key 的 Value 字符长度,如果该 Key 不存在,返回 0。

  • SETEX key seconds value

原子性完成两个操作,一是设置该 Key 的值为指定字符串,同时设置该 Key 在 Redis 服务器中的存活时间 (秒数)。该命令主要应用于 Redis 被当做 Cache 服务器使用时。

返回值:操作成功返回 OK。

  • SETRANGE key offset value

替换指定 Key 的部分字符串值。从 offset 开始,替换的长度为该命令第三个参数 value 的字符串长度,其中如果 offset 的值大于该 Key 的原有值 Value 的字符串长度,Redis 将会在 Value 的后面补齐 (offset - strlen(value)) 数量的 0x00,之后再追加新值。如果该键不存在,该命令会将其原值的长度假设为 0,并在其后添补 offset 个 0x00 后再追加新值。鉴于字符串 Value 的最大长度为 512M,因此 offset 的最大值为 536870911。最后需要注意的是,如果该命令在执行时致使指定 Key 的原有值长度增加,这将会导致 Redis 重新分配足够的内存以容纳替换后的全部字符串,因此就会带来一定的性能折损。

返回值:修改后的字符串 Value 长度。

  • GETRANGE key start end

截取字符串。该命令在截取子字符串时,将以闭区间的方式同时包含 start(0 表示第一个字符) 和 end 所在的字符,如果 end 值超过 Value 的字符长度,该命令将只是截取从 start 开始之后所有的字符数据。

返回值:子字符串。

  • SETBIT key offset value

设置在指定 Offset 上 BIT 的值,该值只能为 1 或 0,在设定后该命令返回该 Offset 上原有的 BIT 值。如果指定 Key 不存在,该命令将创建一个新值,并在指定的 Offset 上设定参数中的 BIT 值。如果 Offset 大于 Value 的字符长度,Redis 将拉长 Value 值并在指定 Offset 上设置参数中的 BIT 值,中间添加的 BIT 值为 0。最后需要说明的是 Offset 值必须大于 0。

返回值:在指定 Offset 上的 BIT 原有值。

  • GETBIT key offset

返回在指定 Offset 上 BIT 的值,0 或 1。如果 Offset 超过 String value 的长度,该命令将返回 0,所以对于空字符串始终返回 0。

返回值:在指定 Offset 上的 BIT 值。

3.2、List 类型及常见操作

在 Redis 中,List 类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部 (left) 和尾部 (right) 添加新的元素。在插入时,如果该键并不存在,Redis 将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List 中可以包含的最大元素数量是 4294967295。从元素插入和删除的效率视角来看,如果我们是在链表的两头插入或删除元素,这将会是非常高效的操作,即使链表中已经存储了百万条记录,该操作也可以在常量时间内完成。然而需要说明的是,如果元素插入或删除操作是作用于链表中间,那将会是非常低效的。

  • LPUSH key value [value …]

在指定 Key 所关联的 List Value 的头部插入参数中给出的所有 Values。如果该 Key 不存在,该命令将在插入之前创建一个与该 Key 关联的空链表,之后再将数据从链表的头部插入。如果该键的 Value 不是链表类型,该命令将返回相关的错误信息。

返回值:插入后链表中元素的数量。

  • LPUSHX key value

仅有当参数中指定的 Key 存在时,该命令才会在其所关联的 List Value 的头部插入参数中给出的 Value,否则将不会有任何操作发生。

返回值:插入后链表中元素的数量。

  • LRANGE key start stop

该命令的参数 start 和 stop 都是以 0 开始的。即 0 表示链表头部的第一个元素。其中 start 的值也可以为负值,-1 将表示链表中的最后一个元素,即尾部元素,-2 表示倒数第二个并以此类推。该命令在获取元素时,start 和 stop 位置上的元素也会被取出。如果 start 的值大于链表中元素的数量,空链表将会被返回。如果 stop 的值大于元素的数量,该命令则获取从 start(包括 start) 开始,链表中剩余的所有元素。

返回值:返回指定范围内元素的列表。

  • LPOP key

返回并弹出指定 Key 关联的链表中的第一个元素,即头部元素。如果该 Key 不存,返回 nil。

返回值:链表头部的元素。

  • LLEN key

返回指定 Key 关联的链表中元素的数量,如果该 Key 不存在,则返回 0。如果与该 Key 关联的 Value 的类型不是链表,则返回相关的错误信息。

返回值:链表中元素的数量。

  • LREM key count value

在指定 Key 关联的链表中,删除前 count 个值等于 value 的元素。如果 count 大于 0,从头向尾遍历并删除,如果 count 小于 0,则从尾向头遍历并删除。如果 count 等于 0,则删除链表中所有等于 value 的元素。如果指定的 Key 不存在,则直接返回 0。

返回值:返回被删除的元素数量。

  • LSET key index value

设定链表中指定位置的值为新值,其中 0 表示第一个元素,即头部元素,-1 表示尾部元素。如果索引值 Index 超出了链表中元素的数量范围,该命令将返回相关的错误信息。

返回值:操作成功返回 OK。

  • LINDEX key index

该命令将返回链表中指定位置 (index) 的元素,index 是以 0 开始的,即 0 表示链表头部的第一个元素,如果 index 为 - 1,表示尾部元素。如果与该 Key 关联的不是链表,该命令将返回相关的错误信息。

返回值:返回请求的元素,如果 index 超出范围,则返回 nil。

  • LTRIM key start stop

该命令将仅保留指定范围内的元素,从而保证链接中的元素数量相对恒定。start 和 stop 参数都是以 0 开始的,即 0 表示链表头部的第一个元素。和其他命令一样,start 和 stop 也可以为负值,-1 表示尾部元素。如果 start 大于链表的尾部,或 start 大于 stop,该命令不会报错,而是返回一个空的链表,与此同时该 Key 也将被删除。如果 stop 大于元素的数量,则保留从 start 开始剩余的所有元素。

返回值:操作成功返回 OK。

  • LINSERT key BEFORE|AFTER pivot value

该命令的功能是在 pivot 元素的前面或后面插入参数中的元素 value。如果 Key 不存在,该命令将不执行任何操作。如果与 Key 关联的 Value 类型不是链表,相关的错误信息将被返回。

返回值:返回成功插入后链表中元素的数量,如果没有找到 pivot,返回 - 1,如果 key 不存在,返回 0。

  • RPUSH key value [value …]

在指定 Key 所关联的 List Value 的尾部插入参数中给出的所有 Values。如果该 Key 不存在,该命令将在插入之前创建一个与该 Key 关联的空链表,之后再将数据从链表的尾部插入。如果该键的 Value 不是链表类型,该命令将返回相关的错误信息。

返回值:插入后链表中元素的数量。

  • RPUSHX key value

仅有当参数中指定的 Key 存在时,该命令才会在其所关联的 List Value 的尾部插入参数中给出的 Value,否则将不会有任何操作发生。

返回值:插入后链表中元素的数量。

  • RPOP key

返回并弹出指定 Key 关联的链表中的最后一个元素,即尾部元素,如果该 Key 不存在,返回 nil。

返回值:链表尾部的元素。

  • RPOPLPUSH source destination

原子性的从与 source 键关联的链表尾部弹出一个元素,同时再将弹出的元素插入到与 destination 键关联的链表的头部。如果 source 键不存在,该命令将返回 nil,同时不再做任何其它的操作了。如果 source 和 destination 是同一个键,则相当于原子性的将其关联链表中的尾部元素移到该链表的头部。

返回值:返回弹出和插入的元素。

3.3、Hash 类型及常见操作

Redis 中的 Hash 类型可以看成具有 String Key 和 String Value 的 map 容器。所以该类型非常适合于存储值对象的信息。如用户信息:Username、Password 和 Age 等。每一个 Hash 可以存储 4294967295 个键值对。

  • HSET key field value

为指定的 Key 设定 Field/Value 对,如果 Key 不存在,该命令将创建新 Key 以存储参数中的 Field/Value 对,如果参数中的 Field 在该 Key 中已经存在,则用新值覆盖其原有值。

返回值:1 表示新的 Field 被设置了新值,0 表示 Field 已经存在用新值覆盖原有值。

  • HGET key field

返回指定 Key 中指定 Field 的关联值。

返回值:返回参数中 Field 的关联值,如果参数中的 Key 或 Field 不存,返回 nil。

  • HSETNX key field value

只有当参数中的 Key 或 Field 不存在的情况下,为指定的 Key 设定 Field/Value 对,否则该命令不会进行任何操作。

返回值:1 表示新的 Field 被设置了新值,0 表示 Key 或 Field 已经存在,该命令没有进行任何操作。

  • HEXISTS key field

判断指定 Key 中的指定 Field 是否存在。

返回值:1 表示存在,0 表示不存在。

  • HLEN key

获取该 Key 所包含的 Field 的数量。

返回值:返回 Key 包含的 Field 数量,如果 Key 不存在,返回 0。

  • HDEL key field [field …]

从指定 Key 的 Hashes Value 中删除参数中指定的多个字段,如果不存在的字段将被忽略。

返回值:如果 Key 不存在,则将其视为空 Hashes,并返回 0,否则返回实际删除的 Field 数量。

  • HINCRBY key field increment

增加指定 Key 中指定 Field 关联的 Value 的值。如果 Key 或 Field 不存在,该命令将会创建一个新 Key 或新 Field,并将其关联的 Value 初始化为 0,之后再指定数字增加的操作。该命令支持的数字是 64 位有符号整型,即 increment 可以负数。

返回值:运算后的值。

  • HGETALL key

获取该键包含的所有 Field/Value。其返回格式为一个 Field、一个 Value,并以此类推。

返回值:Field/Value 的列表。

  • HKEYS key

返回指定 Key 的所有 Fields 名。

返回值:Field 的列表。

  • HVALS key

返回指定 Key 的所有 Values 名。

返回值:Value 的列表。

  • HMGET key field [field …]

获取和参数中指定 Fields 关联的一组 Values。如果请求的 Field 不存在,其值返回 nil。如果 Key 不存在,该命令将其视为空 Hash,因此返回一组 nil。

返回值:返回和请求 Fields 关联的一组 Values,其返回顺序等同于 Fields 的请求顺序。

  • HMSET key field value [field value …]

逐对依次设置参数中给出的 Field/Value 对。如果其中某个 Field 已经存在,则用新值覆盖原有值。如果 Key 不存在,则创建新 Key,同时设定参数中的 Field/Value。

返回值:操作成功返回 OK。

3.4、Set 类型及常见操作

在 Redis 中,我们可以将 Set 类型看作为没有排序的字符串集合。Set 可包含的最大元素数量是 4294967295。Set 类型在功能上还存在着一个非常重要的特性,即在服务器端完成多个 Sets 之间的聚合计算操作,如 unions、intersections 和 differences。由于这些操作均在服务端完成,因此效率极高,而且也节省了大量的网络 IO 开销。

  • SADD key member [member …]

如果在插入的过程用,参数中有的成员在 Set 中已经存在,该成员将被忽略,而其它成员仍将会被正常插入。如果执行该命令之前,该 Key 并不存在,该命令将会创建一个新的 Set,此后再将参数中的成员陆续插入。

返回值:本次操作实际插入的成员数量。

  • SCARD key

获取 Set 中成员的数量。

返回值:返回 Set 中成员的数量,如果该 Key 并不存在,返回 0。

  • SISMEMBER key member

判断参数中指定成员是否已经存在于与 Key 相关联的 Set 集合中。

返回值:1 表示已经存在,0 表示不存在或该 Key 本身并不存在。

  • SMEMBERS key

获取与该 Key 关联的 Set 中所有的成员。

返回值:返回 Set 中所有的成员。

  • SPOP key

随机的移除并返回 Set 中的某一成员。由于 Set 中元素的布局不受外部控制,因此无法像 List 那样确定哪个元素位于 Set 的头部或者尾部。

返回值:返回移除的成员,如果该 Key 并不存在,则返回 nil。

  • SRANDMEMBER key

和 SPOP 一样,随机的返回 Set 中的一个成员,不同的是该命令并不会删除返回的成员。

返回值:返回随机位置的成员,如果 Key 不存在则返回 nil。

  • SREM key member [member …]

从与 Key 关联的 Set 中删除参数中指定的成员,不存在的参数成员将被忽略,如果该 Key 并不存在,将视为空 Set 处理。

返回值:从 Set 中实际移除的成员数量,如果没有则返回 0。

  • SMOVE source destination member

原子性的将参数中的成员从 source 键移入到 destination 键所关联的 Set 中。如果该成员在 source 中并不存在,该命令将不会再执行任何操作并返回 0,否则,该成员将从 source 移入到 destination。如果此时该成员已经在 destination 中存在,那么该命令仅是将该成员从 source 中移出。

返回值:1 表示正常移动,0 表示 source 中并不包含参数成员。

  • SDIFF key [key …]

返回参数中第一个 Key 所关联的 Set 和其后所有 Keys 所关联的 Sets 中成员的差异。如果 Key 不存在,则视为空 Set。

返回值:差异结果成员的集合。

  • SDIFFSTORE destination key [key …]

该命令和 SDIFF 命令在功能上完全相同,两者之间唯一的差别是 SDIFF 返回差异的结果成员,而该命令将差异成员存储在 destination 关联的 Set 中。如果 destination 键已经存在,该操作将覆盖它的成员。

返回值:返回差异成员的数量。

  • SINTER key [key …]

该命令将返回参数中所有 Keys 关联的 Sets 中成员的交集。因此如果参数中任何一个 Key 关联的 Set 为空,或某一 Key 不存在,那么该命令的结果将为空集。

返回值:交集结果成员的集合。

  • SINTERSTORE destination key [key …]

该命令和 SINTER 命令在功能上完全相同,两者之间唯一的差别是 SINTER 返回交集的结果成员,而该命令将交集成员存储在 destination 关联的 Set 中。如果 destination 键已经存在,该操作将覆盖它的成员。

返回值:返回交集成员的数量。

  • SUNION key [key …]

该命令将返回参数中所有 Keys 关联的 Sets 中成员的并集。

返回值:并集结果成员的集合。

  • SUNIONSTORE destination key [key …]

该命令和 SUNION 命令在功能上完全相同,两者之间唯一的差别是 SUNION 返回并集的结果成员,而该命令将并集成员存储在 destination 关联的 Set 中。如果 destination 键已经存在,该操作将覆盖它的成员。

返回值:返回并集成员的数量。

3.5、Sorted-Set 类型及常见操作

Sorted-Set 和 Set 类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个 Set 中。它们之间的主要差别是 Sorted-Set 中的每一个成员都会有一个分数 (score) 与之关联,Redis 正是通过分数来为集合中的成员进行从小到大的排序。然而需要额外指出的是,尽管 Sorted-Set 中的成员必须是唯一的,但是分数 (score) 却是可以重复的。在 Sorted-Set 中添加、删除或更新一个成员都是非常快速的操作,由于 Sorted-Sets 中的成员在集合中的位置是有序的,因此,即便是访问位于集合中部的成员也仍然是非常高效的。事实上,Redis 所具有的这一特征在很多其它类型的数据库中是很难实现的,换句话说,在该点上要想达到和 Redis 同样的高效,在其它数据库中进行建模是非常困难的。

  • ZADD key score member [score member …]

添加参数中指定的所有成员及其分数到指定 key 的 Sorted-Sets 中,在该命令中我们可以指定多组 score/member 作为参数。如果在添加时参数中的某一成员已经存在,该命令将更新此成员的分数为新值,同时再将该成员基于新值重新排序。如果键不存在,该命令将为该键创建一个新的 Sorted-Sets Value,并将 score/member 对插入其中。

返回值:本次操作实际插入的成员数量。

  • ZINCRBY key increment member

该命令将为指定 Key 中的指定成员增加指定的分数。如果成员不存在,该命令将添加该成员并假设其初始分数为 0,此后再将其分数加上 increment。如果 Key 不存,该命令将创建该 Key 及其关联的 Sorted-Sets,并包含参数指定的成员,其分数为 increment 参数。

返回值:以字符串形式表示的新分数。

  • ZCARD key

获取与该 Key 相关联的 Sorted-Sets 中包含的成员总数量。

返回值:返回 Sorted-Sets 中的成员数量,如果该 Key 不存在,返回 0。

  • ZCOUNT key min max

该命令用于获取分数 (score) 在 min 和 max 之间的成员数量。缺省情况下,min 和 max 表示的范围是闭区间范围,即 min <= score <= max 内的成员将被返回。然而我们可以通过在 min 和 max 的前面添加 "(" 字符来表示开区间,如(min max 表示 min < score <= max,而(min (max 表示 min < score < max。

返回值:分数指定范围内成员的数量。

  • ZRANGE key start stop [WITHSCORES]

该命令返回排名在参数 start 和 stop 指定范围内的成员,这里 start 和 stop 参数都是以 0 开始的,即 0 表示第一个成员,-1 表示最后一个成员。如果 start 大于该 Sorted-Sets 中的最大索引值或 start > stop,此时一个空集合将被返回。如果 stop 大于最大索引值,该命令将返回从 start 到集合的最后一个成员。如果命令中带有可选参数 WITHSCORES 选项,该命令在返回的结果中将包含每个成员的分数值,如 value1,score1,value2,score2…。

返回值:返回索引在 start 和 stop 之间的成员列表。

  • ZREVRANGE key start stop [WITHSCORES]

该命令的功能和 ZRANGE 基本相同,唯一的差别在于顺序相反。

返回值:返回指定的成员列表。

  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

该命令将返回分数在 min 和 max 范围内的成员,即满足表达式 min <= score <= max 的成员,其中返回的成员是按照其分数从低到高的顺序返回,如果成员具有相同的分数,则按成员的字典顺序返回。可选参数 LIMIT 用于限制返回成员的数量范围。可选参数 offset 表示从符合条件的第 offset 个成员开始返回,同时返回 count 个成员。

返回值:返回分数在指定范围内的成员列表。

  • ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

该命令除了排序方式是基于从高到低的分数排序之外,其它功能和参数含义均与 ZRANGEBYSCORE 相同。

返回值:返回分数在指定范围内的成员列表。

  • ZRANK key member

该命令将返回参数中指定成员的位置值(按分数由低到高的顺序),其中 0 表示第一个成员,它是 Sorted-Sets 中分数最低的成员。

返回值:如果该成员存在,则返回它的位置索引值,否则返回 nil。

  • ZREVRANK key member

该命令的功能和 ZRANK 基本相同,唯一的差别在于顺序相反。

返回值:如果该成员存在,则返回它的位置索引值,否则返回 nil。

  • ZSCORE key member

获取指定成员的分数。 返回值:如果该成员存在,以字符串的形式返回其分数,否则返回 nil。

  • ZREM key member [member …]

该命令将移除参数中指定的成员,其中不存在的成员将被忽略。如果与该 Key 关联的 Value 不是 Sorted-Sets,相应的错误信息将被返回。

返回值:实际被删除的成员数量。

  • ZREMRANGEBYRANK key start stop

删除索引位置位于 start 和 stop 之间的成员,start 和 stop 都是以 0 开始的,即 0 表示分数最低的成员,-1 表示最后一个成员,即分数最高的成员。

返回值:被删除的成员数量。

  • ZREMRANGEBYSCORE key min max

删除分数在 min 和 max 之间的所有成员,即满足表达式 min <= score <= max 的所有成员。对于 min 和 max 参数,可以采用开区间的方式表示,具体规则参照 ZCOUNT。

返回值:被删除的成员数量。