清空 Redis 缓存

5 阅读4分钟

在尝试清空 Redis 缓存之前,首先需要确保你的 Redis 服务端处于正常运行状态。如果你在 Windows 环境下执行 redis-cli 时遇到“由于目标计算机积极拒绝,无法连接”(Connection refused)的错误,通常是因为 Redis 服务端尚未启动,或者防火墙拦截了连接。你可以按照以下步骤进行排查和解决:

  1. 确保 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 的服务,右键点击“启动”。

  2. 检查 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 服务才能生效。
  3. 检查 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)是不可逆的危险操作,一旦执行数据将无法恢复。在执行任何清空操作前,请务必确认业务需求,并确保已经备份了重要数据。