0%

Redis 命令手册

Redis 是 Remote Dictionary Server(Redis)的缩写,是一个由 Salvatore Sanfilippo 编写的 Key-Value 存储系统,是一个使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型的 Key-Value 数据库,并提供多种语言的 API。

本文归纳了 Redis List、HASH、ZSET、PUB/SUB 相关的命令。

官方文档 Command reference

String

关键字符解释

字符 全拼 解释
M Multiple 多重的
EX Set the specified expire time, in seconds. 设置秒级过期时间
PX Set the specified expire time, in milliseconds. 设置毫秒级过期时间
NX Only set the key if it does not already exist. 不存在时 SET
XX Only set the key if it already exist. 存在时 SET
INCR Increment 增加
DECR Decrement 减少

命令列表

命令 用法 描述 备注
GET / MGET GET key / MGET key [key …] 返回给定 key 的值 不存在返回 nil
SET / MSET SET key value / MSET key value [key value …] 设置给定 kv,存在则覆盖 SET key value [EX seconds] [PX milliseconds] [NX\ XX]
APPEND APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾 如 key 不存在,则直接将 key 设置为 value
SETEX / PSETEX SETEX / PSETEX key time value 设置 秒/毫秒 级过期时间
SETNX / MSETNX STENX key value / MSETNX key value 不存在指定 key 时,设置 value
GETSET GETSET key value 返回给定 key 的旧值。 当 key 没有旧值时,即 key 不存在时,返回 nil
GETRANGE GETRANGE key offset end 返回 key 中字符串值的子字符
SETRANGE SETRANGE key offset end 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始
GETBIT GETBIT key offset 对 key 所储存的字符串值,获取指定偏移量上的位(bit)
SETBIT SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)
INCR / DECR INCR key / DECR key 将 key 中储存的数字值 加/减 一 如 key 不存在,则先初始化为 0,再进行计算操作
INCRBY / DECRBY INCRBY key amount / DECR key amount 将 key 所储存的值 加/减 给定的值 amount
INCRBYFLOAT INCRBYFLOAT key increment 将 key 所储存的值加上给定的浮点增量值(increment)
STRLEN STRLEN key 返回 key 所储存的字符串值的长度

List

关键字符解释

字符 全拼 解释
L Left 列表头部
R Right 列表尾部
B Block 阻塞
REM REMove 移除

命令列表

命令 用法 描述 备注
L PUSH/R PUSH X key element [element …] 按照对应方向向列表 key 插入一个或多个值。 如果列表不存在,一个空列表会被创建并执行 X 操作。
L PUSH X/R PUSH X X key element [element …] 按照对应方向向存在的列表 key 插入一个或多个值。 如果列表不存在,操作无效。
L POP/R POP X key 按照对应方向对列表 key 移除并返回一个元素。 移除列表的最后一个元素时,也将空列表一并移除(即不能通过 LPUSHX 等命令添加元素)。
R POP L PUSH RPOPLPUSH source destination 命令 RPOPLPUSH 在一个原子时间内,执行以下两个动作:将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。
B L POP/B R POP/B R POP L PUSH X args timeout 以阻塞的方式调用命令,timeout(s) 为超时时间。 Timeout 为 0 代表无限期阻塞
L INDEX LINDEX key index 通过索引获取列表中的元素。 索引从 0 开始
L RANGE LRANGE key start end 返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。
L INSERT LINSERT key BEFORE\ AFTER exist_value insert_element 在列表的元素前或者后插入元素。
L SET LSET key index value 通过索引设置列表元素的值。
L TRIM LTRIM key start end 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
L REM LREM key count value 移除 count 个与 value 值相同的列表元素。 count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
count = 0 : 移除表中所有与 VALUE 相等的值。
L LEN LLEN key 返回列表 key 的长度。 如果 key 不存在,则 key 被解释为一个空列表,返回 0。

Hash

关键字符解释

字符 全拼 解释
M Multiple 多重的
NX Not already eXist 不存在时
INCR INCRement 增加

命令列表

命令 用法 描述 备注
H GET HGET key field 获取哈希表中指定字段的值 如不存在则返回 nil
H M GET HMGET key field [field…] 获取哈希表中所有给定字段的值 如某字段不存在,则返回 nil
H GET ALL HGETALL key 获取哈希表中所有字段和值 若 key 不存在,返回空列表。
H KEYS HKEYS key 获取所有哈希表中的字段
H VALS HVAL key 获取哈希表中所有值
H SET HSET key field value 将哈希表 key 中的字段 field 的值设为 value 不存在则创建,存在则覆盖。
H M SET HMSET key field value [field value …] 同时将多个 field-value (域-值)对设置到哈希表 key 中 不存在则创建,存在则覆盖。
H SET NX HSETNX key field value 只有在字段 field 不存在时,设置哈希表字段的值
H DEL HDEL key field [field…] 删除一个或多个哈希表字段
H EXISTS HEXISTS key field 查看哈希表 key 中,指定的字段是否存在
H LEN HLEN key 获取哈希表中字段的数量
H INCRBY HINCRBY key field incr_by_number 为哈希表 key 中的指定字段的整数值加上增量 increment 本操作的值被限制在 64 位(bit)有符号数字表示之内。
H INCRBY FLOAT HINCRBYFLOAT key field incr_by_number 为哈希表 key 中的指定字段的浮点数值加上增量 increment

Sorted Set

关键字符解释

字符 全拼 解释
REV REVerse 逆序
REM REMove 移除
LEX LEXicographical order 字典序

命令列表

命令 用法 描述 备注
Z ADD ZADD key score value [score value …] 向有序集合添加一个或多个成员,或者更新已存在成员的分数
Z SCORE ZSCORE key member 返回有序集中,成员的分数值。 如果成员元素不是有序集 key 的成员,或 key 不存在,返回 nil 。
Z CARD ZCARD key 计算集合中元素的数量
Z COUNT ZCOUNT key min max 计算有序集合中分数区间(min, max]的成员数量。 -inf 表示负无穷 float,+inf 表示正无穷 float
Z LEX COUNT ZLEXCOUNT key min max 计算有序集合中指定字典区间内成员数量。 - 表示 string 最小成员,+ 表示 string 最大成员,[string 表示 string range item
Z RANGE/Z REV RANGE ZRANGE/ZREVRANGE key start stop [WITHSCORES] 返回有序集中,指定区间内的成员。成员的位置按分数值递增(从小到大)来排序。具有相同分数值的成员按字典序(lexicographical order)来排列。ZREVRANGE 返回的是逆序。 以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
Z RANGE BY SCORE/Z REV RANGE BY SCORE X key (min max/ max min) [WITHSCORES] [LIMIT offset count] 返回有序集中指定分数区间内的所有的成员。
Z RANGE BY LEX ZRANGEBYLEX key min max [LIMIT offset count] 通过字典区间返回有序集合的成员。
Z RANK/Z REV RANK ZRANK key member 返回有序集中指定成员的排名。其中有序集成员按分数值递增(从小到大)顺序排列。ZREVRANK 返回的是逆序排名。 与 index 相同,rank 也是从 0 开始计数的。
Z REM ZREM key member 移除有序集中的一个或多个成员,不存在的成员将被忽略。
Z REM RANGE BY(RANK \ SCORE \ LEX) X key start stop 移除有序集中,指定排名(rank)或分数(score)或字典(lexicographical)区间内的所有成员。 返回被移除成员的数量。
Z SCAN ZSCAN key cursor [MATCH pattern] [COUNT count] 用于迭代有序集合中的元素(包括元素成员和元素分值)
Z INCRBY ZINCRBY key increment member 对有序集合中指定成员的分数加上增量 increment(增量可为负数)。 当 key 不存在,或分数不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member 。
Z UNION STORE ZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM\ MIN\ MAX] 计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。 默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和 。
Z INTER STORE ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM\ MIN\ MAX] 计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。 默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和。

Pub & Sub

关键字符解释

字符 全拼 解释
P Pattern 模式(匹配模式)

命令列表

命令 用法 描述 备注
SUBSCRIBE SUBSCRIBE channel [channel …] 订阅给定的一个或多个频道的信息
PSUBSCRIBE PSUBSCRIBE pattern [pattern …] 订阅一个或多个符合给定模式的频道 * 作为匹配符
UNSUBSCRIBE UNSUBSCRIBE [channel [channel …]] 指退订给定的频道
PUNSUBSCRIBE PUNSUBSCRIBE [pattern [pattern …]] 退订所有给定模式的频道
PUBLISH PUBLISH channel message 将信息发送到指定的频道
PUBSUB PUBSUB subcommand [argument [argument …]] 查看订阅与发布系统状态 subcommand:
CHANNELS [pattern] 列出当前的活跃频道。
NUMSUB [channel-1 … channel-N] 返回给定频道的订阅者数量。
NUMPAT 返回订阅模式的数量。

Stream

数据结构

数据结构 Stream 是一个新的强大的支持多播的可持久化的消息队列,主要借鉴了 Kafka 的设计。

Redis Stream 的结构如上图所示,它有一个消息链表,序列化储存所有加入的消息,每个消息都有一个唯一的 ID 并且会被持久化。

每个 Stream 都有唯一的名称,它就是 Redis 的 key,在我们首次使用 XADD 指令追加消息时自动创建。

每个 Stream 都可以挂多个消费组(Consumer Group),每个消费组会有个游标 last_delivered_id 在 Stream 数组之上往前移动,表示当前消费组已经消费到哪条消息了。每个消费组都有一个 Stream 内唯一的名称,消费组不会自动创建,它需要单独的指令 XGROUP CREATE 进行创建,需要指定从 Stream 的某个消息 ID 开始消费,这个 ID 用来初始化 last_delivered_id 变量。

每个消费组的状态都是独立的,相互不受影响。也就是说同一份 Stream 内部的消息会被每个消费组都消费到。

同一个消费组可以挂接多个消费者(Consumer),这些消费者之间是竞争关系,任意一个消费者读取了消息都会使游标 last_delivered_id 往前移动。每个消费者者有一个组内唯一名称。

消费者内部会有个状态变量 pending_ids,它记录了当前已经被客户端读取的消息,但是还没有 ack(类似 XACK)。如果客户端没有 ack,这个变量里面的消息ID会越来越多,一旦某个消息被 ack,它就开始减少。这个 pending_ids 变量在 Redis 官方被称之为 PEL,也就是 Pending Entries List,这是一个很核心的数据结构,它用来确保客户端至少消费了消息一次,而不会在网络传输的中途丢失了没处理。

如果该消息已经发送给该消费者,并且它只是再次重新获取相同的消息,那么最后送达时间会被更新为当前时间,并且送达次数会加1。你可以使用XPENDING命令访问这些消息属性。

消息ID和内容

消息 ID 的形式是 TimestampInMillis-Sequence,例如 1527846880572-5,它表示当前的消息在毫米时间戳 1527846880572 时产生,并且是该毫秒内产生的第 5 条消息。消息 ID 可以由服务器自动生成,也可以由客户端自己指定,但是形式必须是整数-整数,而且必须是后面加入的消息的 ID 要大于前面的消息 ID 。

消息内容就是键值对,形如 hash 结构的键值对。

消息队列相关命令

命令 用法 描述 备注
X ADD XADD key ID field value [field value …] [MAXLEN\ MINID [=\ ~] threshold [LIMIT count]] *\ ID 添加消息到末尾,保证有序。 * 可以自动生成唯一ID。
~ 代表大约(大于等于)LIMIT count。
X TRIM XTRIM key MAXLEN\ MINID [=\ ~] threshold [LIMIT count] 对流进行修剪,限制长度,必要时丢弃 ID 旧的数据。 threshold [LIMIT count] 即限制队列的长度。
X DEL XDEL key ID [ID …] 删除消息
X LEN XLEN key 获取流包含的元素数量,即消息长度
X RANGE/X REV RANGE XRANGE key start end [COUNT count] 返回流中满足给定ID范围的条目。范围由最小和最大ID指定。所有ID在指定的两个ID之间或与其中一个ID相等(闭合区间)的条目将会被返回。该命令会自动过滤已经删除的消息。 start, end 中 -,+ 可代表流中最小、最大 ID。当然,start 和 end 为同一个 ID 可视作单条查询、
X READ XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key …] ID [ID …] 以阻塞或非阻塞方式获取消息列表(对于每个 Stream 只获取 count 个大于给定 ID 的消息)。count 默认为 1。 示例:XREAD STREAMS key $
X ACK XACK key group ID [ID …] 将消息标记为”已处理” 该命令返回成功确认的消息数。

消费者组相关命令

命令 用法 描述 备注
X GROUP CREATE XGROUP CREATE key groupname ID\ $ 创建与流关联的新消费者组。如果指定的消费者组已经存在,则该命令将返回-BUSYGROUP错误。 否则将执行该操作并返回OK。你可以为给定的流关联无限多的消费者组,没有硬性限制。 最后一个参数是指定消费者的最后交付 ID(下次读取 ID 大于最后交付 ID 的第一个消息),$ 是指读取后到达流的新数据,0 是指从流中第一条消息开始读取。当然也可以直接设置 ID 作为参数。
X GROUP DESTORY XGROUP DESTROY key groupname 删除消费者组。即使存在活动的消费者和待处理消息,消费者组也将被销毁,因此请确保仅在真正需要时才调用此命令。 每当某个命令提到新的消费者名称时,就会自动创建消费者组中的消费者。 但有时候删除旧的消费者可能会有用,因为他们已经不再使用。 以上格式的命令返回消费者在被删除之前所拥有的待处理消息数量。
X GROUP DEL CONSUMER XGROUP DELCONSUMER key groupname consumer 删除指定消费者
X GROUP SETID XGROUP SETID key groupname ID\ $ 为消费者组设置新的最后递送消息 ID
X INFO STREAM XINFO STREAM key 返回有关存储在特定键的流的一般信息。
X INFO GROUPS XINFO GROUPS key 获取流的消费者组的信息
X INFO CONSUMERS XINFO CONSUMERS key groupname 取得指定消费者组中的消费者列表
X PENDING XPENDING key group [[IDLE min-idle-time] start end count [consumer]] 显示待处理消息的相关信息
X READ GROUP XREADGROUP GROUP group consumer [COUNT count] [BLOCK milliseconds] [NOACK] STREAMS key [key …] ID [ID …] 读取消费者组中大于指定 ID 的消息,并将 id 放入 pending_ids 中,等待 XACK 确认。 可以通过给XREADGROUP初始 ID 为 0 并执行相同的循环来访问我们的消息历史。 一旦提供的 ID 为 0 并且回复是一组空的消息,我们就知道我们已经处理并确认完了所有的待处理消息。使用>作为ID,以便获取新消息并重新加入正在处理新消息的消费者。
X CLAIM XCLAIM key group consumer min-idle-time ID [ID …] [IDLE ms] [TIME ms-unix-time] [RETRYCOUNT count] [FORCE] [JUSTID] 在流的消费者组上下文中,改变待处理消息的所有权,并等待 XACK 确认。

需要注意的特性

从永久性失败中恢复的特性

Redis 消息队列解决方案中,编写多个消费者参与同一个消费者组,每个消费者获取消息的一个子集进行处理,并且在故障恢复时重新读取各自的待处理消息。然而在现实世界中,消费者有可能永久地失败并且永远无法恢复,因此消费者的待处理消息会永远无法处理掉。

Redis 的消费者组提供了一个专门针对这种场景的特性,使用 XPENDINGXCLAIM 命令用以认领给定消费者的待处理消息。这个特性是非常明确的,消费者在检查待处理消息列表后,认领待处理的消息,否则服务器将把待处理的消息永久分配给旧消费者。这样不同的应用程序就可以选择是否使用这样的特性,以及使用它的方式。

1. 提供可观察性

第一步是使用 XPENDING 命令,提供消费者组中待处理条目的可观察性。

> XPENDING mystream mygroup
1) (integer) 2  # 给定消费者组的待处理消息总数
2) 1526569498055-0 # 所有待处理消息中的最小ID
3) 1526569506935-0 # 所有待处理消息中的最大ID
4) 1) 1) "Bob" # 消费者列表和每个消费者的待处理消息数量
      2) "2"

现在我们有了每一条消息的详细信息:消息ID,消费者名称,空闲时间(单位是毫秒,意思是:自上次将消息传递给某个消费者以来经过了多少毫秒),以及每一条给定的消息被传递了多少次。

2. 认领待处理消息

第二步是使用 XCLAIM 命令,用于复制消费者组的更改。

XCLAIM <key> <group> <consumer> <min-idle-time> <ID-1> <ID-2> ... <ID-N>

当我们认领指定 ID 的消息,仅当消息闲置至少 min-idle-time 且没有原始消费者或其他消费者进行推进(确认或认领它)时,并将所有权分配给消费者 consumer。

Redis 提供了最小空闲时间,只有在上述消息的空闲时间大于指定的空闲时间时,操作才会起作用。这很有用,因为有可能两个客户端会同时尝试认领一条消息:

Client 1: XCLAIM mystream mygroup Alice 3600000 1526569498055-0
Clinet 2: XCLAIM mystream mygroup Lora 3600000 1526569498055-0

然而认领一条消息的副作用是会重置它的闲置时间!并将增加其传递次数的计数器,所以上面第二个客户端的认领会失败。通过这种方式,我们可以避免对消息进行简单的重新处理(即使是在一般情况下,你仍然不能获得准确的一次处理)。

下面是命令执行的结果:

> XCLAIM mystream mygroup Alice 3600000 1526569498055-0
1) 1) 1526569498055-0
   2) 1) "message"
      2) "orange"

Alice 成功认领了该消息,现在可以处理并确认消息,尽管原来的消费者还没有恢复,也能往前推动。

从上面的例子很明显能看到,作为成功认领了指定消息的副作用,XCLAIM 命令也返回了消息数据本身。但这不是强制性的。可以使用 JUSTID 选项,以便仅返回成功认领的消息的 ID。如果你想减少客户端和服务器之间的带宽使用量的话,以及考虑命令的性能,这会很有用,并且你不会对消息感兴趣,因为稍后你的消费者的实现方式将不时地重新扫描历史待处理消息。

认领也可以通过一个独立的进程来实现:这个进程只负责检查待处理消息列表,并将空闲的消息分配给看似活跃的消费者。可以通过 Redis Stream 的可观察特性获得活跃的消费者。

3. 其他故障处理

XPENDING 的输出中,你所看到的计数器是每一条消息的交付次数。这样的计数器以两种方式递增:消息通过 XCLAIM 成功认领时,或者调用 XREADGROUP 访问历史待处理消息时。

当出现故障时,消息被多次传递是很正常的,但最终它们通常会得到处理。但有时候处理特定的消息会出现问题,因为消息会以触发处理代码中的 bug 的方式被损坏或修改。在这种情况下,消费者处理这条特殊的消息会一直失败。因为我们有传递尝试的计数器,所以我们可以使用这个计数器来检测由于某些原因根本无法处理的消息。所以一旦消息的传递计数器达到你给定的值,比较明智的做法是将这些消息放入另外一个 Stream,并给系统管理员发送一条通知。这基本上是 Redis Stream 实现的 dead letter 概念的方式。

与 Kafka 分区机制的区别

Kafka 将数据分成了多个 partition ,在不同的节点中保存。Redis 的 Stream 数据结构只是一个 key,其中的数据分区需要配合其他中间件实现。

持久化,复制和消息安全性

与任何其他 Redis 数据结构一样,Stream会异步复制到从节点,并持久化到 AOF 和 RDB 文件中。但可能不那么明显的是,消费者组的完整状态也会传输到 AOF,RDB 和从节点,因此如果消息在主节点是待处理的状态,在从节点也会是相同的信息。同样,节点重启后,AOF 文件会恢复消费者组的状态。

但是请注意,Redis Stream 和消费者组使用 Redis 默认复制来进行持久化和复制,所以:

  • 如果消息的持久性在您的应用程序中很重要,则 AOF 必须与强大的 fsync 策略一起使用。
  • 默认情况下,异步复制不能保证复制 XADD 命令或者消费者组的状态更改:在故障转移后,可能会丢失某些内容,具体取决于从节点从主节点接收数据的能力。
  • WAIT 命令可以用于强制将更改传输到一组从节点上。但请注意,虽然这使得数据不太可能丢失,但由 Sentinel 或 Redis 集群运行的 Redis 故障转移过程仅执行尽力检查以故障转移到最新的从节点,并且在某些特定故障下可能会选举出缺少一些数据的从节点。 因此,在使用 Redis Stream 和消费者组设计应用程序时,确保了解你的应用程序在故障期间应具有的语义属性,并进行相应地配置,评估它是否足够安全地用于您的用例。

其他命令

Redis 键(key) 命令

命令 描述
Redis Type 命令 返回 key 所储存的值的类型。
Redis PEXPIREAT 命令 设置 key 的过期时间亿以毫秒计。
Redis PEXPIREAT 命令 设置 key 过期时间的时间戳(unix timestamp) 以毫秒计
Redis Rename 命令 修改 key 的名称
Redis PERSIST 命令 移除 key 的过期时间,key 将持久保持。
Redis Move 命令 将当前数据库的 key 移动到给定的数据库 db 当中。
Redis RANDOMKEY 命令 从当前数据库中随机返回一个 key 。
Redis Dump 命令 序列化给定 key ,并返回被序列化的值。
Redis TTL 命令 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
Redis Expire 命令 seconds 为给定 key 设置过期时间。
Redis DEL 命令 该命令用于在 key 存在是删除 key。
Redis Pttl 命令 以毫秒为单位返回 key 的剩余的过期时间。
Redis Renamenx 命令 仅当 newkey 不存在时,将 key 改名为 newkey 。
Redis EXISTS 命令 检查给定 key 是否存在。
Redis Expireat 命令 EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。
Redis Keys 命令 查找所有符合给定模式( pattern)的 key 。

Redis 集合(Set) 命令

命令 描述
Redis Sunion 命令 返回所有给定集合的并集
Redis Scard 命令 获取集合的成员数
Redis Srandmember 命令 返回集合中一个或多个随机数
Redis Smembers 命令 返回集合中的所有成员
Redis Sinter 命令 返回给定所有集合的交集
Redis Srem 命令 移除集合中一个或多个成员
Redis Smove 命令 将 member 元素从 source 集合移动到 destination 集合
Redis Sadd 命令 向集合添加一个或多个成员
Redis Sismember 命令 判断 member 元素是否是集合 key 的成员
Redis Sdiffstore 命令 返回给定所有集合的差集并存储在 destination 中
Redis Sdiff 命令 返回给定所有集合的差集
Redis Sscan 命令 迭代集合中的元素
Redis Sinterstore 命令 返回给定所有集合的交集并存储在 destination 中
Redis Sunionstore 命令 所有给定集合的并集存储在 destination 集合中
Redis Spop 命令 移除并返回集合中的一个随机元素

Redis 连接 命令

命令 描述
Redis Echo 命令 打印字符串
Redis Select 命令 切换到指定的数据库
Redis Ping 命令 查看服务是否运行
Redis Quit 命令 关闭当前连接
Redis Auth 命令 验证密码是否正确

Redis 服务器 命令

命令 描述
Redis Client Pause 命令 在指定时间内终止运行来自客户端的命令
Redis Debug Object 命令 获取 key 的调试信息
Redis Flushdb 命令 删除当前数据库的所有key
Redis Save 命令 异步保存数据到硬盘
Redis Showlog 命令 管理 redis 的慢日志
Redis Lastsave 命令 返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示
Redis Config Get 命令 获取指定配置参数的值
Redis Command 命令 获取 Redis 命令详情数组
Redis Slaveof 命令 将当前服务器转变为指定服务器的从属服务器(slave server)
Redis Debug Segfault 命令 让 Redis 服务崩溃
Redis Flushall 命令 删除所有数据库的所有key
Redis Dbsize 命令 返回当前数据库的 key 的数量
Redis Bgrewriteaof 命令 异步执行一个 AOF(AppendOnly File) 文件重写操作
Redis Cluster Slots 命令 获取集群节点的映射数组
Redis Config Set 命令 修改 redis 配置参数,无需重启
Redis Command Info 命令 获取指定 Redis 命令描述的数组
Redis Shutdown 命令 异步保存数据到硬盘,并关闭服务器
Redis Sync 命令 用于复制功能(replication)的内部命令
Redis Client Kill 命令 关闭客户端连接
Redis Role 命令 返回主从实例所属的角色
Redis Monitor 命令 实时打印出 Redis 服务器接收到的命令,调试用
Redis Command Getkeys 命令 获取给定命令的所有键
Redis Client Getname 命令 获取连接的名称
Redis Config Resetstat 命令 重置 INFO 命令中的某些统计数据
Redis Command Count 命令 获取 Redis 命令总数
Redis Time 命令 返回当前服务器时间
Redis Info 命令 获取 Redis 服务器的各种信息和统计数值
Redis Config rewrite 命令 对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写
Redis Client List 命令 获取连接到服务器的客户端连接列表
Redis Client Setname 命令 设置当前连接的名称
Redis Bgsave 命令 在后台异步保存当前数据库的数据到磁盘

Redis 脚本 命令

命令 描述
Redis Script kill 命令 杀死当前正在运行的 Lua 脚本。
Redis Script Load 命令 将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。
Redis Eval 命令 执行 Lua 脚本。
Redis Evalsha 命令 执行 Lua 脚本。
Redis Script Exists 命令 查看指定的脚本是否已经被保存在缓存当中。
Redis Script Flush 命令 从脚本缓存中移除所有脚本。

Redis 事务 命令

命令 描述
Redis Exec 命令 执行所有事务块内的命令。
Redis Watch 命令 监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
Redis Discard 命令 取消事务,放弃执行事务块内的所有命令。
Redis Unwatch 命令 取消 WATCH 命令对所有 key 的监视。
Redis Multi 命令 标记一个事务块的开始。

Redis HyperLogLog 命令

命令 描述
Redis Pgmerge 命令 将多个 HyperLogLog 合并为一个 HyperLogLog
Redis Pfadd 命令 添加指定元素到 HyperLogLog 中。
Redis Pfcount 命令 返回给定 HyperLogLog 的基数估算值。

Redis 地理位置(geo) 命令

命令 描述
Redis GEOHASH 命令 返回一个或多个位置元素的 Geohash 表示
Redis GEOPOS 命令 从key里返回所有给定位置元素的位置(经度和纬度)
Redis GEODIST 命令 返回两个给定位置之间的距离
Redis GEORADIUS 命令 以给定的经纬度为中心, 找出某一半径内的元素
Redis GEOADD 命令 将指定的地理空间位置(纬度、经度、名称)添加到指定的key中
Redis GEORADIUSBYMEMBER 命令 找出位于指定范围内的元素,中心点是由给定的位置元素决定