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)仅在测试环境慎用,生产需走审批流程。
相关推荐
MetaLite10 小时前
SpringBoot底座为什么要接管默认配置-自动装配与安全默认值
spring boot·安全·spring
李可以量化10 小时前
Redis Client 从入门到精通(一)下:redis-py 核心数据结构操作与连接管理
数据结构·redis·python·bootstrap·量化交易·qmt
Su米苏10 小时前
Spring AI 的一些配置类怎么去配置
人工智能·spring
李昊哲小课11 小时前
SpringMVC 完整执行流程
spring boot·spring·mvc
码哥DFS12 小时前
LRU缓存
前端·javascript·缓存
博傅1 天前
Spring 核心原理
java·后端·spring
会编程的吕洞宾1 天前
Redis大Key拖垮线上?排查定位与治理实战
数据库·redis·bootstrap
码农阿豪1 天前
若依启动突然报 Redis MISCONF?一次从应用报错到磁盘爆满的完整排查记录
数据库·redis·bootstrap
玹外之音1 天前
Spring AI + Elasticsearch 向量存储实战:从零构建智能文档检索系统
人工智能·spring·elasticsearch
进阶的小名1 天前
Spring AI 2.0 探索:多 OpenAI-Compatible 模型接入,以及下一代 Session 记忆管理
java·人工智能·后端·gpt·spring·ai·chatgpt