在尝试清空 Redis 缓存之前,首先需要确保你的 Redis 服务端处于正常运行状态。如果你在 Windows 环境下执行 redis-cli 时遇到“由于目标计算机积极拒绝,无法连接”(Connection refused)的错误,通常是因为 Redis 服务端尚未启动,或者防火墙拦截了连接。你可以按照以下步骤进行排查和解决:
-
确保 Redis 服务端已启动(最常见原因)
Redis 客户端(redis-cli)必须依赖服务端(redis-server)运行。如果你只打开了客户端而没有开启服务端,就会报此错误。-
方法一(控制台模式) :不要关闭当前的命令行窗口,重新打开一个新的 CMD 窗口,进入 Redis 安装目录,输入以下命令启动服务端并保持窗口开启:
cmd
编辑
redis-server.exe redis.windows.conf启动成功后,再回到你原来的窗口输入
redis-cli即可正常连接。 -
方法二(Windows服务模式) :如果你之前将 Redis 安装为了 Windows 服务,可以按
Win + R键,输入services.msc打开服务管理器,找到名为Redis的服务,右键点击“启动”。
-
-
检查 Redis 配置文件(针对远程连接)
如果你是在尝试从其他机器连接这台电脑的 Redis,默认配置会拒绝外部访问。你需要打开redis.windows.conf文件,进行以下修改:- 将
bind 127.0.0.1这一行注释掉(改为#bind 127.0.0.1),或者修改为bind 0.0.0.0以允许所有 IP 连接。 - 将
protected-mode yes修改为protected-mode no,关闭保护模式。 - 注意:修改配置文件后,必须重启 Redis 服务才能生效。
- 将
-
检查 Windows 防火墙设置
如果服务端已启动且配置正确,但仍无法连接,可能是 Windows 防火墙阻止了 Redis 的默认端口(6379)。请进入 Windows 防火墙设置,检查入站规则,确保 6379 端口已被放行。
在成功连接 Redis 后,清空缓存的方法主要取决于你的具体需求,比如是想清空所有数据、清空指定数据库,还是只删除部分特定的缓存。以下是几种常见且规范的操作方式:
1. 清空整个 Redis 实例的所有缓存
如果你需要清除 Redis 服务器上所有数据库(默认 0-15 库)中的所有键值对,可以使用 FLUSHALL 命令。
⚠️ 生产环境强烈建议: 使用异步版本 FLUSHALL ASYNC。因为同步的 FLUSHALL 会阻塞 Redis 主线程,直到所有键删除完成,这可能导致线上服务卡顿甚至瘫痪。
操作示例:
bash
编辑
# 连接 Redis 客户端
redis-cli
# 清空所有库
FLUSHALL
# 异步清空所有库
FLUSHALL ASYNC
2. 仅清空当前/指定数据库的缓存
如果只想清空某一个数据库(例如 3 号库),可以使用 FLUSHDB 命令,这比 FLUSHALL 的风险要低得多。
操作示例:
bash
编辑
# 切换到指定的 3 号库
SELECT 3
# 异步清空当前库
FLUSHDB ASYNC
3. 删除指定的缓存键(Key)
如果只需要清除特定的缓存数据,可以使用 DEL 命令。
操作示例:
bash
编辑
# 删除单个缓存
DEL mykey
# 删除多个缓存
DEL key1 key2
如果是批量删除符合某种规则的缓存,建议使用 SCAN 命令结合 DEL 命令来遍历并删除,尽量避免使用 KEYS 命令,因为 KEYS 在数据量大时同样会阻塞 Redis 服务器。
4. 使用图形化工具操作
如果你不习惯使用命令行,也可以使用如 Another Redis Desktop Manager 或 Redis Desktop Manager 等可视化工具。在工具中选中目标 Redis 实例或数据库,右键点击并选择「Flush All DB Async」(异步清空)或「Flush All DB」(同步清空),在弹出的确认框中确认即可。
5. 通过编程语言代码清空
在你的项目代码中,也可以通过对应的 Redis 客户端库来执行清空操作。例如:
- Python:
r.flushall() - Java (Jedis):
jedis.flushAll() - Spring Boot:
stringRedisTemplate.delete(stringRedisTemplate.keys("*"))
💡 核心注意事项:
清空 Redis 缓存(尤其是 FLUSHALL 和 FLUSHDB)是不可逆的危险操作,一旦执行数据将无法恢复。在执行任何清空操作前,请务必确认业务需求,并确保已经备份了重要数据。