跳到主要内容

通用API

连接命令

AUTH

语法

    AUTH <placeholderforpassword>

验证连接。

Resp 回复

简单字符串回复:OK,如果密码或用户名/密码对无效,则返回错误。

安全提示

只使用强大且长的密码,以使攻击不可行。更好的身份验证管理方式将是使用ACL功能。


ECHO

语法

    ECHO <message>

返回消息。

Resp 回复

批量字符串回复:给定的字符串。


HELLO

语法

    HELLO [protover [AUTH username password] [SETNAME clientname]]

切换到不同的协议,可选地进行身份验证并设置连接名称,或提供上下文客户端报告。

当使用可选的protover参数调用时,此命令将协议切换到指定版本,并接受以下选项:

AUTH <username> <password>:除了切换到指定协议版本外,直接验证连接。这使得在设置新连接时无需在HELLO之前调用AUTH。请注意,用户名可以设置为“default”,以便在不使用ACLs而使用Redis 6之前的更简单requirepass机制的服务器上进行身份验证。SETNAME <clientname>:这相当于调用CLIENT SETNAME。

Resp 回复

映射回复:服务器属性列表。简单错误回复:如果请求的协议版本不存在。


PING

语法

    PING key

如果没有提供参数,则返回PONG;否则,返回参数的副本作为批量字符串。

Resp 回复

以下任何一种

  • 简单字符串回复:未提供参数时为PONG。
  • 批量字符串回复:提供的参数。

QUIT

语法

    QUIT

请求服务器关闭连接。当所有待处理的回复都已写入客户端时,连接将关闭。

Resp 回复

简单字符串回复:OK。


SELECT

语法

    SELECT

选择具有指定从零开始的数字索引的Redis逻辑数据库。新连接总是使用数据库0。

Resp 回复

简单字符串回复:OK。


通用命令

DEL

语法

    DEL key [key ...]

移除指定的键。如果键不存在,则忽略。

Resp 回复

整数回复:被移除的键的数量。


EXISTS

语法

    EXISTS key [key ...]

确定一个或多个键是否存在。如果同一个存在的键在参数中多次提及,它将被多次计数。因此,如果foo存在,EXISTS foo foo将返回2。

Resp 回复

整数回复:参数中存在的键的数量。


EXPIRE

语法

    EXPIRE key seconds [NX | XX | GT | LT]

设置键的超时时间(秒)。超时到期后,键将自动删除。

EXPIRE命令支持一组选项

  • NX -- 仅当键没有过期时设置过期时间
  • XX -- 仅当键有现有过期时设置过期时间
  • GT -- 仅当新过期时间大于当前过期时间时设置过期时间
  • LT -- 仅当新过期时间小于当前过期时间时设置过期时间

GT、LT和NX选项是互斥的。

Resp 回复

以下之一

  • 整数回复:如果未设置超时(例如,键不存在或由于提供的参数而跳过操作),则为0。
  • 整数回复:如果设置了超时,则为1。

EXPIREAT

语法

    EXPIREAT key seconds [NX | XX | GT | LT]

使用绝对Unix时间戳(自1970年1月1日起的秒数)以秒为单位设置键的超时时间。在该时间戳之后,键将自动删除。

EXPIREAT命令支持一组选项

  • NX -- 仅当键没有过期时设置过期时间
  • XX -- 仅当键有现有过期时设置过期时间
  • GT -- 仅当新过期时间大于当前过期时间时设置过期时间
  • LT -- 仅当新过期时间小于当前过期时间时设置过期时间

GT、LT和NX选项是互斥的。

Resp 回复

以下之一

  • 整数回复:如果未设置超时(例如,键不存在或由于提供的参数而跳过操作),则为0。
  • 整数回复:如果设置了超时,则为1。

EXPIRETIME

语法

    EXPIRETIME key

返回给定键将过期的绝对Unix时间戳(自1970年1月1日起的秒数)。

Resp 回复

以下之一

  • 整数回复:过期Unix时间戳(毫秒)。
  • 整数回复:如果键存在但没有关联的过期时间,则为-1。
  • 整数回复:如果键不存在,则为-2。

KEYS

语法

    KEYS pattern

返回所有匹配模式的键。

警告:在生产环境中使用KEYS命令时务必极其小心。它在处理大型数据库时可能会严重影响性能。

支持的模式示例

  • h?llo匹配hello、hallo和hxllo
  • h*llo匹配hllo和heeeello
  • h[ae]llo匹配hello和hallo,但不匹配hillo
  • h[^e]llo匹配hallo、hbllo等,但不匹配hello
  • h[a-b]llo匹配hallo和hbllo

如果要匹配特殊字符本身,请使用\进行转义。

Resp 回复

数组回复:匹配模式的键列表。


MIGRATE

待办事项:验证语法和功能

Resp 回复


PERSIST

语法

    PERSIST key

移除键上现有的超时,将键从易失性(设置了过期时间的键)变为持久性(没有关联超时,永不过期的键)。

Resp 回复


PEXPIRE

语法

    PEXPIRE key milliseconds [NX | XX | GT | LT]

此命令与EXPIRE完全相同,但键的生存时间以毫秒而不是秒指定。

Resp 回复

以下之一

  • 整数回复:如果键不存在或没有关联的超时,则为0。
  • 整数回复:如果超时已移除,则为1。

PEXPIRETIME

语法

    PEXPIRETIME key

返回给定键将过期的绝对Unix时间戳(自1970年1月1日起的毫秒数)。

Resp 回复

以下之一

  • 整数回复:过期Unix时间戳(毫秒)。
  • 整数回复:如果键存在但没有关联的过期时间,则为-1。
  • 整数回复:如果键不存在,则为-2。

PEXPIREAT

语法

    PEXPIREAT key seconds [NX | XX | GT | LT]

使用绝对Unix时间戳(自1970年1月1日起的秒数)以毫秒为单位设置键的超时时间。在该时间戳之后,键将自动删除。

PEXPIREAT命令支持一组选项

  • NX -- 仅当键没有过期时设置过期时间
  • XX -- 仅当键有现有过期时设置过期时间
  • GT -- 仅当新过期时间大于当前过期时间时设置过期时间
  • LT -- 仅当新过期时间小于当前过期时间时设置过期时间

GT、LT和NX选项是互斥的。

Resp 回复

以下之一

  • 整数回复:如果未设置超时(例如,键不存在或由于提供的参数而跳过操作),则为0。
  • 整数回复:如果设置了超时,则为1。

PTTL

语法

    PTTL  key

TTL一样,此命令返回设置了过期时间的键的剩余生存时间,唯一的区别是TTL返回剩余时间(秒),而PTTL返回剩余时间(毫秒)。

Resp 回复

以下之一

  • 整数回复:TTL(毫秒)。
  • 整数回复:如果键存在但没有关联的过期时间,则为-1。
  • 整数回复:如果键不存在,则为-2。

RENAME

语法

    RENAME key newkey [WITHETAG]

将键重命名为newkey。如果键不存在,则返回错误。如果newkey已存在,它将被覆盖,此时RENAME会执行隐式DEL操作。

选项:

  • WITHETAG - 如果newkey之前不存在,重命名后newkey将与一个ETag关联。如果newkey之前存在并带有一个ETag,RENAME将更新ETag。如果newkey之前存在但没有ETag,那么重命名后newkey将与一个ETag关联。您可以此处阅读更多关于ETag的信息。

Resp 回复

简单字符串回复:OK。


RENAMENX

语法

    RENAMENX key newkey [WITHETAG]

如果newkey不存在,则将key重命名为newkey。如果key不存在,则返回错误。

选项:

  • WITHETAG - 重命名后,newkey将与一个ETag关联。您可以此处阅读更多关于ETag的信息。

Resp 回复

以下之一

  • 整数回复:如果键重命名为newkey,则为1。
  • 整数回复:如果newkey已存在,则为0。

SCAN

语法

    SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]

遍历存储中存在的键,并仅返回匹配所选过滤器的键。

MATCH选项 可以只迭代与给定glob-style模式匹配的元素,类似于KEYS命令的行为,该命令以模式作为其唯一参数。

TYPE选项 您可以使用TYPE选项要求SCAN仅返回匹配给定类型的对象,从而允许您遍历数据库以查找特定类型的键。

COUNT选项

默认COUNT值为10,但用户可以自由更改。

Resp 回复

数组回复:具体来说,一个包含两个元素的数组。

  • 第一个元素是一个批量字符串回复,表示一个无符号64位数字,即游标。
  • 第二个元素是一个数组回复,包含扫描到的键的名称。

TTL

语法

    TTL key

返回设置了超时的键的剩余生存时间。

Resp回复

以下之一

  • 整数回复:TTL(秒)。
  • 整数回复:如果键存在但没有关联的过期时间,则为-1。
  • 整数回复:如果键不存在,则为-2。

TYPE

语法

    TYPE key

返回存储在键处的值类型的字符串表示。可能返回的不同类型有:string、list、set、zset和hash。

Resp回复

简单字符串回复:键的类型,如果键不存在则为none。


语法

此命令与DEL非常相似:它移除指定的键。与DEL一样,如果键不存在则忽略。但是,此命令在不同的线程中执行实际的内存回收,因此它是非阻塞的,而DEL是阻塞的。

Resp回复

整数回复:已解除链接的键的数量。


DUMP

[!重要]
DUMP目前仅支持不带lzf压缩的字符串类型

语法

DUMP mykey

以Redis特定格式序列化存储在键处的值并返回给用户。返回的值可以使用RESTORE命令重新合成回Redis键。

Resp回复

字符串回复:序列化格式是不透明且非标准的,但它具有一些语义特征

  • 它包含一个64位校验和,用于确保检测到错误。RESTORE命令在根据序列化值合成键之前会检查校验和。
  • 值以RDB使用的相同格式编码。
  • RDB版本编码在序列化值内部,因此具有不兼容RDB格式的不同Redis版本将拒绝处理序列化值。

RESTORE

[!重要]
RESTORE目前仅支持不带lzf压缩的字符串类型

语法

restore mykey 0 "\x00\x0evallllllllllll\x0b\x00|\xeb\xe2|\xd2.\xfa7"

创建一个与通过反序列化提供的序列化值(通过DUMP获得)获得的值关联的键。

如果ttl为0,则创建不带任何过期时间的键;否则,设置指定的过期时间(毫秒)。

Resp回复

简单字符串回复:OK。