Redis 命令详解:通用命令
摘要
- 本文基于
redis-7.4.7 - Redis官网:https://redis.io/
通用命令 简介
- 不依赖于具体数据类型,对所有 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 | SET order:1 PAID |
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 | SET pay:1001 SUCCESS |
-
示例 2:同时要求 AOF + 副本确认
1 | SET pay:1002 SUCCESS |
-
示例返回值
1 | 1) (integer) 1 # 本地 fsync 确认数量 |