Redis 删除缓存全场景操作手册(详细版)

本文覆盖 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)
  1. 左侧选中目标 Redis 实例(如「192.168.1.200:6380」);
  2. 右键点击实例 → 选择「Flush All DB Async」(异步)/「Flush All DB」(同步);
  3. 弹出确认框,勾选「我知道风险」→ 点击「确认」。
示例 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

注意事项

  1. 同步版 FLUSHALL 会阻塞主线程,直到所有键删除完成,生产环境绝对禁用;
  2. 操作前必须备份:执行 BGSAVE 生成 RDB 快照(redis-cli BGSAVE);
  3. 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:图形化工具
  1. 左侧展开目标实例 → 找到「3 号库」(标注为「db3」);
  2. 右键点击「db3」→ 选择「Flush DB Async」(异步)/「Flush DB」(同步);
  3. 确认弹窗后完成操作。
示例 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

注意事项

  1. 库编号默认范围 0-15,可通过配置文件 databases 参数修改;
  2. 集群下需逐个节点执行,否则仅清空当前节点的指定库。

场景 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:图形化工具删除单个键
  1. 左侧展开实例 → 选中「db1(1 号库)」;
  2. 右侧列表找到目标键(如 user:1001);
  3. 右键点击该键 → 选择「Delete」(等价于 DEL)/「Unlink」(等价于 UNLINK);
  4. 确认后完成删除。

注意事项

  1. UNLINK 是 Redis 4.0+ 新增命令,低版本需升级或用 DEL(但大 Key 会阻塞);
  2. 大 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:图形化工具批量删除
  1. 左侧选中「db1」→ 右侧勾选需要删除的多个键;
  2. 右键点击选中的键 → 选择「Delete Selected」(DEL)/「Unlink Selected」(UNLINK);
  3. 确认后完成批量删除。

注意事项

  1. DEL/UNLINK 支持的键数量无硬性限制,但建议单次不超过 1000 个(避免命令行参数过长);
  2. 批量删除返回值为「成功删除的键数」(不存在的键不计入)。

场景 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*"`

注意事项

  1. SCAN 遍历可能返回重复键,但重复执行 UNLINK 无影响(删除不存在的键返回 0);

  2. 若匹配的键数量极多(>10 万),可加 --count 参数分批遍历(如 --scan --count 1000 --pattern "order:2025*");

  3. Windows 系统需用 for /f 替代 xargs

    复制代码
    for /f "tokens=*" %k in ('redis-cli --scan --pattern "order:2025*" -n 1') do redis-cli -n 1 UNLINK %k

通用避坑指南(所有场景必看)

  1. 异步优先 :生产环境所有删除操作优先用 ASYNC(FLUSHDB/FLUSHALL)、UNLINK(删键),杜绝同步阻塞;
  2. 备份前置 :删库 / 删全实例前,必须执行 BGSAVE 生成 RDB 快照(redis-cli BGSAVE);
  3. 库号确认 :操作前用 SELECT 库号-n 库号 确认目标库,避免误删其他库;
  4. 权限控制(Redis 6.0+) :操作用户需分配对应权限(如 ACL SETUSER admin ON >MyRedis@1234 ~* +@all);
  5. 大 Key 特殊处理 :若大 Key 是列表 / 哈希,可分步删除(如列表用 LTRIM key 10000 -1 分批截取,再删剩余);
  6. 命令历史安全 :Redis 6.0+ 用 -u 替代 -a 传入密码,避免密码暴露在 history 命令中。

核心原则(总结记忆)

  1. 能精准删键就不删库,能异步删就不同步删;
  2. 模糊删键仅用 SCAN + UNLINK,杜绝 KEYS
  3. 大 Key 必用 UNLINK,小 Key 可用 DEL
  4. 集群操作需逐个节点执行,避免漏删;
  5. 全实例删除(FLUSHALL)仅在测试环境慎用,生产需走审批流程。
相关推荐
Knight_AL2 小时前
Redis Lua 脚本核心语法详解:KEYS[1]、ARGV[1]、tonumber 是什么意思?
redis·junit·lua
虹科网络安全10 小时前
艾体宝洞察 | Redis vs ElastiCache:哪个更具成本效益?
数据库·redis·缓存
廋到被风吹走11 小时前
【Spring】DispatcherServlet解析
java·后端·spring
廋到被风吹走12 小时前
【Spring】PlatformTransactionManager详解
java·spring·wpf
それども13 小时前
Spring Bean 的name可以相同吗
java·后端·spring
qq_124987075315 小时前
基于微信小程序的电子元器件商城(源码+论文+部署+安装)
java·spring boot·spring·微信小程序·小程序·毕业设计
a努力。15 小时前
美团Java面试被问:Redis集群模式的工作原理
java·redis·后端·面试
程序员阿鹏16 小时前
责任链模式
java·spring·servlet·tomcat·maven·责任链模式
黄俊懿16 小时前
【深入理解SpringCloud微服务】Seata(AT模式)源码解析——全局事务的回滚
java·后端·spring·spring cloud·微服务·架构·架构师