通用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。
UNLINK
语法
此命令与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。