本文覆盖 Redis 所有删除缓存的场景,包含核心命令、分步操作、一键执行、图形化工具操作、集群适配,每个场景均附可直接复用的示例,兼顾测试 / 生产环境。
先看核心命令总览(快速对照)
| 删除场景 | 生产推荐命令 | 测试环境命令 | 同步 / 异步 | 风险等级 |
|---|---|---|---|---|
| 全实例所有缓存(所有库) | FLUSHALL ASYNC |
FLUSHALL |
异步 / 同步 | 极高 |
| 单个库所有缓存 | FLUSHDB ASYNC |
FLUSHDB |
异步 / 同步 | 中 |
| 单个库单个小 Key(<10MB) | DEL key |
DEL key |
同步 | 低 |
| 单个库单个大 Key(>10MB / 大集合) | UNLINK key |
UNLINK key |
异步 | 低 |
| 单个库多个精准键(小 Key) | DEL k1 k2 k3 |
DEL k1 k2 k3 |
同步 | 低 |
| 单个库多个精准键(大 Key) | UNLINK k1 k2 k3 |
UNLINK k1 k2 k3 |
异步 | 低 |
| 单个库模糊匹配键(如前缀) | SCAN + UNLINK |
KEYS + DEL(禁用) |
异步 | 低 |
场景 1:删除全实例所有缓存(所有数据库)
核心说明
清空 Redis 实例中所有数据库 (默认 0-15 库)的所有键,生产环境必须用异步版(ASYNC),避免阻塞主线程。
操作示例(附具体参数)
示例 1:本地无密码 / 默认端口(6379)
# 步骤1:连接Redis客户端
redis-cli
# 步骤2:异步清空所有库(推荐)
FLUSHALL ASYNC
# 验证:查看所有库键数(0号库为例)
SELECT 0
DBSIZE # 返回0则清空成功
示例 2:远程 Redis(IP:192.168.1.200,端口:6380,密码:MyRedis@1234)
方式 1:分步执行(密码不暴露在命令历史,推荐)
# 步骤1:连接远程节点
redis-cli -h 192.168.1.200 -p 6380
# 步骤2:密码认证
AUTH MyRedis@1234
# 步骤3:异步清空所有库
FLUSHALL ASYNC
# 退出客户端
EXIT
方式 2:一键执行(Redis 6.0+ 用 -u 避免密码暴露)
redis-cli -h 192.168.1.200 -p 6380 -u redis://MyRedis@1234@192.168.1.200:6380 FLUSHALL ASYNC
(Redis 5.x 及以下用 -a,但密码会暴露在命令历史:redis-cli -h 192.168.1.200 -p 6380 -a MyRedis@1234 FLUSHALL ASYNC)
示例 3:图形化工具(Another Redis Desktop Manager)
- 左侧选中目标 Redis 实例(如「192.168.1.200:6380」);
- 右键点击实例 → 选择「Flush All DB Async」(异步)/「Flush All DB」(同步);
- 弹出确认框,勾选「我知道风险」→ 点击「确认」。
示例 4:Redis 集群环境(3 节点:192.168.1.201/202/203:6379)
集群下 FLUSHALL 仅作用于当前连接节点,需逐个节点执行:
# 连接第一个节点并清空
redis-cli -c -h 192.168.1.201 -p 6379 -a MyRedis@1234 FLUSHALL ASYNC
# 连接第二个节点并清空
redis-cli -c -h 192.168.1.202 -p 6379 -a MyRedis@1234 FLUSHALL ASYNC
# 连接第三个节点并清空
redis-cli -c -h 192.168.1.203 -p 6379 -a MyRedis@1234 FLUSHALL ASYNC
注意事项
- 同步版
FLUSHALL会阻塞主线程,直到所有键删除完成,生产环境绝对禁用; - 操作前必须备份:执行
BGSAVE生成 RDB 快照(redis-cli BGSAVE); - Redis 7.0+ 集群支持「集群级 FLUSHALL」,需开启集群同步(需专业版支持)。
场景 2:删除单个数据库的所有缓存
核心说明
仅清空指定编号的数据库 (如 3 号库),风险远低于 FLUSHALL,生产优先用异步版。
操作示例(以 3 号库为例)
示例 1:本地无密码 / 默认端口
# 步骤1:连接客户端
redis-cli
# 步骤2:选中目标库(3号库)
SELECT 3
# 步骤3:异步清空当前库
FLUSHDB ASYNC
# 验证:查看3号库键数
DBSIZE # 返回0则清空成功
示例 2:远程 Redis(IP:192.168.1.200,端口:6380,密码:MyRedis@1234,3 号库)
方式 1:分步执行
redis-cli -h 192.168.1.200 -p 6380
AUTH MyRedis@1234
SELECT 3
FLUSHDB ASYNC
EXIT
方式 2:一键执行
redis-cli -h 192.168.1.200 -p 6380 -a MyRedis@1234 SELECT 3 FLUSHDB ASYNC
示例 3:图形化工具
- 左侧展开目标实例 → 找到「3 号库」(标注为「db3」);
- 右键点击「db3」→ 选择「Flush DB Async」(异步)/「Flush DB」(同步);
- 确认弹窗后完成操作。
示例 4:Redis 集群环境(清空所有节点的 3 号库)
# 节点1:清空3号库
redis-cli -c -h 192.168.1.201 -p 6379 -a MyRedis@1234 SELECT 3 FLUSHDB ASYNC
# 节点2:清空3号库
redis-cli -c -h 192.168.1.202 -p 6379 -a MyRedis@1234 SELECT 3 FLUSHDB ASYNC
# 节点3:清空3号库
redis-cli -c -h 192.168.1.203 -p 6379 -a MyRedis@1234 SELECT 3 FLUSHDB ASYNC
注意事项
- 库编号默认范围 0-15,可通过配置文件
databases参数修改; - 集群下需逐个节点执行,否则仅清空当前节点的指定库。
场景 3:删除单个库中的单个键(小 Key / 大 Key)
核心说明
- 小 Key:字符串 < 10MB、哈希 / 列表 < 1 万元素,用
DEL(同步,无阻塞风险); - 大 Key:字符串 > 10MB、哈希 / 列表 > 10 万元素,用
UNLINK(异步,避免阻塞主线程)。
操作示例(以 1 号库为例,小 Key:user:1001,大 Key:order:bigdata)
示例 1:本地删除单个小 Key
redis-cli
SELECT 1
# 删除小Key
DEL user:1001
# 验证:返回1表示删除成功,0表示键不存在
示例 2:本地删除单个大 Key
redis-cli
SELECT 1
# 异步删除大Key
UNLINK order:bigdata
# 验证:返回1表示标记删除成功
示例 3:远程删除(IP:192.168.1.200,端口:6380,密码:MyRedis@1234,1 号库)
小 Key 一键删除
redis-cli -h 192.168.1.200 -p 6380 -a MyRedis@1234 -n 1 DEL user:1001
大 Key 一键删除
redis-cli -h 192.168.1.200 -p 6380 -a MyRedis@1234 -n 1 UNLINK order:bigdata
(-n 1 等价于 SELECT 1,直接指定库号)
示例 4:图形化工具删除单个键
- 左侧展开实例 → 选中「db1(1 号库)」;
- 右侧列表找到目标键(如 user:1001);
- 右键点击该键 → 选择「Delete」(等价于 DEL)/「Unlink」(等价于 UNLINK);
- 确认后完成删除。
注意事项
UNLINK是 Redis 4.0+ 新增命令,低版本需升级或用DEL(但大 Key 会阻塞);- 大 Key 判断:可通过
MEMORY USAGE key查看键占用内存(如MEMORY USAGE order:bigdata)。
场景 4:删除单个库中的多个精准键
核心说明
- 多个小 Key:用
DEL k1 k2 k3批量同步删除; - 多个大 Key:用
UNLINK k1 k2 k3批量异步删除; - 混合键:小 Key + 大 Key,优先用
UNLINK(异步更安全)。
操作示例(以 1 号库为例,小 Key:user:1001、cart:5001;大 Key:log:202501、log:202502)
示例 1:本地批量删除多个小 Key
redis-cli
SELECT 1
# 批量删除小Key
DEL user:1001 cart:5001
# 验证:返回2表示成功删除2个键(若有1个不存在则返回1)
示例 2:本地批量删除多个大 Key
redis-cli
SELECT 1
# 批量异步删除大Key
UNLINK log:202501 log:202502
示例 3:远程批量删除(IP:192.168.1.200,端口:6380,密码:MyRedis@1234,1 号库)
# 混合键批量删除(优先UNLINK)
redis-cli -h 192.168.1.200 -p 6380 -a MyRedis@1234 -n 1 UNLINK user:1001 log:202501
示例 4:图形化工具批量删除
- 左侧选中「db1」→ 右侧勾选需要删除的多个键;
- 右键点击选中的键 → 选择「Delete Selected」(DEL)/「Unlink Selected」(UNLINK);
- 确认后完成批量删除。
注意事项
DEL/UNLINK支持的键数量无硬性限制,但建议单次不超过 1000 个(避免命令行参数过长);- 批量删除返回值为「成功删除的键数」(不存在的键不计入)。
场景 5:删除单个库中的模糊匹配键(按前缀 / 后缀 / 规则)
核心说明
- 禁用
KEYS 匹配规则:遍历全库键,阻塞主线程,生产环境绝对禁止; - 推荐
SCAN + UNLINK:迭代遍历符合规则的键,分批删除,非阻塞(生产唯一安全方式)。
操作示例(以 1 号库为例,删除前缀为「order:2025」的所有键)
示例 1:本地模糊删除(生产安全方式)
# 核心命令:SCAN遍历 + xargs批量删除
redis-cli --scan --pattern "order:2025*" -n 1 | xargs redis-cli -n 1 UNLINK
参数说明:
--scan:迭代遍历键(非阻塞);--pattern "order:2025*":匹配前缀为 order:2025 的键(*通配所有,?通配单个字符,[]通配范围);-n 1:指定 1 号库;xargs:将遍历结果作为参数传给后续的UNLINK命令。
示例 2:远程模糊删除(IP:192.168.1.200,端口:6380,密码:MyRedis@1234,1 号库)
redis-cli -h 192.168.1.200 -p 6380 --scan --pattern "order:2025*" -n 1 | xargs redis-cli -h 192.168.1.200 -p 6380 -a MyRedis@1234 -n 1 UNLINK
示例 3:Redis 集群环境模糊删除(删除所有节点 2 号库中「user:*」前缀的键)
# 节点1:删除2号库user:*前缀键
redis-cli -c -h 192.168.1.201 -p 6379 --scan --pattern "user:*" -n 2 | xargs redis-cli -c -h 192.168.1.201 -p 6379 -a MyRedis@1234 -n 2 UNLINK
# 节点2:删除2号库user:*前缀键
redis-cli -c -h 192.168.1.202 -p 6379 --scan --pattern "user:*" -n 2 | xargs redis-cli -c -h 192.168.1.202 -p 6379 -a MyRedis@1234 -n 2 UNLINK
示例 4:测试环境临时用法(禁用!仅演示)
# 仅测试环境用,生产绝对禁止
redis-cli
SELECT 1
DEL `KEYS "order:2025*"`
注意事项
-
SCAN遍历可能返回重复键,但重复执行UNLINK无影响(删除不存在的键返回 0); -
若匹配的键数量极多(>10 万),可加
--count参数分批遍历(如--scan --count 1000 --pattern "order:2025*"); -
Windows 系统需用
for /f替代xargs:for /f "tokens=*" %k in ('redis-cli --scan --pattern "order:2025*" -n 1') do redis-cli -n 1 UNLINK %k
通用避坑指南(所有场景必看)
- 异步优先 :生产环境所有删除操作优先用
ASYNC(FLUSHDB/FLUSHALL)、UNLINK(删键),杜绝同步阻塞; - 备份前置 :删库 / 删全实例前,必须执行
BGSAVE生成 RDB 快照(redis-cli BGSAVE); - 库号确认 :操作前用
SELECT 库号或-n 库号确认目标库,避免误删其他库; - 权限控制(Redis 6.0+) :操作用户需分配对应权限(如
ACL SETUSER admin ON >MyRedis@1234 ~* +@all); - 大 Key 特殊处理 :若大 Key 是列表 / 哈希,可分步删除(如列表用
LTRIM key 10000 -1分批截取,再删剩余); - 命令历史安全 :Redis 6.0+ 用
-u替代-a传入密码,避免密码暴露在history命令中。
核心原则(总结记忆)
- 能精准删键就不删库,能异步删就不同步删;
- 模糊删键仅用
SCAN + UNLINK,杜绝KEYS; - 大 Key 必用
UNLINK,小 Key 可用DEL; - 集群操作需逐个节点执行,避免漏删;
- 全实例删除(FLUSHALL)仅在测试环境慎用,生产需走审批流程。