Redis 命令详解:通用命令

摘要

通用命令 简介

  • 不依赖于具体数据类型,对所有 Key 或 Redis 对象都通用的一组基础管理命令。
  • 这些命令作用在 Key 层面、对象元数据层面、存储管理层面、复制与持久化层面,而不是具体的数据结构内容。
特征 说明
与数据类型无关 不关心 value 是 String、Hash、List、JSON、Bitmap 等
作用对象是 Key 或对象元数据 如 TTL、类型、编码、引用计数、是否存在
管理属性为主 生命周期、复制、迁移、删除、遍历
可用于所有 Redis 模块数据 RedisJSON、RediSearch、TimeSeries 等同样适用
运维和系统级使用频繁 监控、迁移、数据治理、容量管理

通用命令 命令详解

一、Key 生命周期 / 过期时间管理

  • 用于设置、查询、取消 Key 的过期时间。

命令 语法 参数说明 示例
EXPIRE EXPIRE key seconds [NX|XX|GT|LT] seconds:过期秒数
NX:仅当 key 没有过期时间时设置
XX:仅当 key 已有过期时间时设置
GT:仅当新过期时间大于旧值
LT:仅当新过期时间小于旧值
EXPIRE user:1 60
PEXPIRE PEXPIRE key milliseconds [NX|XX|GT|LT] milliseconds:过期毫秒数 PEXPIRE user:1 1500
EXPIREAT EXPIREAT key unix_timestamp [NX|XX|GT|LT] unix_timestamp:秒级时间戳 EXPIREAT user:1 1737000000
PEXPIREAT PEXPIREAT key unix_milliseconds_timestamp [NX|XX|GT|LT] 毫秒级 Unix 时间戳 PEXPIREAT user:1 1737000000123
TTL TTL key 返回剩余过期时间(秒)
-1:永久 key
-2:不存在
TTL user:1
PTTL PTTL key 返回剩余过期时间(毫秒) PTTL user:1
EXPIRETIME EXPIRETIME key 返回过期时间(秒级时间戳) EXPIRETIME user:1
PEXPIRETIME PEXPIRETIME key 返回过期时间(毫秒级时间戳) PEXPIRETIME user:1
PERSIST PERSIST key 移除过期时间,使 key 永久存在 PERSIST user:1
TOUCH TOUCH key [key ...] 更新 key 最近访问时间,返回成功更新数量 TOUCH k1 k2

二、Key 查询与遍历

  • 用于查询 key 是否存在、类型、批量扫描。

命令 语法 参数说明 示例
EXISTS EXISTS key [key ...] 返回存在的 key 数量 EXISTS a b c
TYPE TYPE key 返回 key 的数据类型 TYPE user:1
KEYS KEYS pattern 按模式匹配所有 key(生产慎用) KEYS user:*
SCAN SCAN cursor [MATCH pattern] [COUNT count] cursor:游标
MATCH:匹配模式
COUNT:期望返回数量
SCAN 0 MATCH user:* COUNT 100
RANDOMKEY RANDOMKEY 随机返回一个 key RANDOMKEY

三、Key 修改 / 删除 / 复制 / 移动

  • 用于 key 的生命周期与位置管理。

命令 语法 参数说明 示例
DEL DEL key [key ...] 同步删除 key DEL k1 k2
UNLINK UNLINK key [key ...] 异步删除 key(大 key 推荐) UNLINK bigkey
COPY COPY source destination [DB db] [REPLACE] DB:目标数据库
REPLACE:覆盖目标
COPY k1 k2 REPLACE
MOVE MOVE key db db:目标数据库编号 MOVE user:1 1
RENAME RENAME key newkey 强制覆盖目标 key RENAME a b
RENAMENX RENAMENX key newkey 目标不存在时才重命名 RENAMENX a b
MIGRATE MIGRATE host port key db timeout [COPY] [REPLACE] 用于跨实例迁移 key MIGRATE 127.0.0.1 6379 k1 0 5000

四、序列化 / 备份 / 恢复

  • 用于数据导出和导入。

命令 语法 参数说明 示例
DUMP DUMP key 返回序列化后的二进制值 DUMP user:1
RESTORE RESTORE key ttl serialized-value [REPLACE] ttl:毫秒
serialized-value:DUMP 输出
RESTORE user:2 0 "<dump>" REPLACE

五、排序相关

  • 对集合数据进行排序。

命令 语法 参数说明 示例
SORT SORT key [BY pattern] [LIMIT offset count] [GET pattern ...] [ASC|DESC] [ALPHA] [STORE dest] 支持排序、分页、映射、存储 SORT mylist ASC STORE sorted:list
SORT_RO SORT_RO key ... 只读排序(不会修改数据) SORT_RO mylist DESC

六、对象内部信息(调试 / 运维)

  • 用于诊断 Redis 内部对象状态。

命令 语法 参数说明 示例
OBJECT ENCODING OBJECT ENCODING key 返回内部编码方式 OBJECT ENCODING user:1
OBJECT FREQ OBJECT FREQ key 返回 LFU 访问频率 OBJECT FREQ user:1
OBJECT IDLETIME OBJECT IDLETIME key 返回空闲时间(秒) OBJECT IDLETIME user:1
OBJECT REFCOUNT OBJECT REFCOUNT key 返回引用计数 OBJECT REFCOUNT user:1

七、复制一致性 / 持久化确认

  • 主要用于 写入可靠性保证、强一致性场景。

7.1 WAIT —— 等待副本确认

项目 内容
命令 WAIT
语法 WAIT numreplicas timeout
参数说明 numreplicas:需要确认写入的副本数量
timeout:最大等待时间(毫秒)
返回值 实际确认的副本数量
作用 阻塞当前客户端,直到之前的写命令被至少 numreplicas 个副本确认
典型场景 强一致写、主从同步确认、金融类写入
  • 示例

1
2
3
4
5
6
7
SET order:1 PAID
WAIT 2 5000
# 含义:
# 等待至少 2 个副本确认该写入。
# 最多等待 5 秒。
# 如果 5 秒内只确认 1 个副本,则返回 1。
# 返回0,则表示没有副本确认该写入。

7.2 WAITAOF —— 等待 AOF 和副本持久化确认

  • Redis 7+ 新增,用于保证 本地 AOF fsync + 副本同步 的写入可靠性。

项目 内容
命令 WAITAOF
语法 WAITAOF numlocal numreplicas timeout
参数说明 numlocal:本地 AOF fsync 确认数量(0/1)
numreplicas:副本确认数量
timeout:最大等待时间(毫秒)
返回值 数组:[local_acks, replica_acks]
作用 阻塞直到写入被本地 AOF 持久化和/或副本确认
典型场景 金融交易、强持久化一致性要求
  • 参数语义说明

参数 含义
numlocal = 1 等待本地 AOF fsync 完成
numlocal = 0 不要求本地 fsync
numreplicas 等待副本确认数量
timeout 超时时间(毫秒)
  • 示例 1:要求本地 AOF 持久化

1
2
3
4
5
6
SET pay:1001 SUCCESS
WAITAOF 1 0 3000
# 含义:
# 必须确认 写入已经 fsync 到本地 AOF 文件。
# 不关心副本同步。
# 超时 3 秒。
  • 示例 2:同时要求 AOF + 副本确认

1
2
3
4
5
6
SET pay:1002 SUCCESS
WAITAOF 1 2 5000
# 含义:
# 必须确认本地 AOF 已 fsync。
# 至少 2 个副本确认。
# 最大等待 5 秒。
  • 示例返回值

1
2
1) (integer) 1   # 本地 fsync 确认数量
2) (integer) 2 # 副本确认数量