*Redis FLUSHDB 命令

清空当前数据库中的所有 key。


*语法

FLUSHDB [ASYNC | SYNC]

*参数说明

参数 类型 必填 说明
ASYNC 标志 异步删除,不阻塞(Redis 4.0+)
SYNC 标志 同步删除(默认)

*返回值

条件 返回值
清空成功 OK

*时间复杂度

O(N),N 为当前 DB 的 key 数量。异步模式立即返回。

⚠️ 生产环境极其危险:FLUSHDB 删除当前 DB 所有数据,误操作可导致严重事故。


*示例

> DBSIZE
(integer) 100

> FLUSHDB ASYNC
OK

> DBSIZE
(integer) 0

*常见错误

  1. 生产误操作:开发/测试环境脚本误连生产执行 FLUSHDB。
  2. 未指定 DB:连接默认 DB0,FLUSHDB 清空 DB0 而非预期 DB。

*最佳实践

  1. rename-command 禁用或重命名rename-command FLUSHDB ""rename-command FLUSHDB FLUSHDB_SECRET
  2. 生产环境禁用:通过配置或网络隔离阻止生产实例执行 FLUSHDB/FLUSHALL
  3. 优先用 UNLINK/SCAN+DEL:需要清理时用 SCAN 分批删除,而非 FLUSHDB。
  4. 异步模式:必须使用时加 ASYNC,减少阻塞。

*FAQ

Q: FLUSHDB 和 FLUSHALL 有什么区别? A: FLUSHDB 只清空当前 DB;FLUSHALL 清空所有 DB。两者都极其危险。

Q: FLUSHDB ASYNC 真的不阻塞吗? A: 立即返回,但后台线程删除大量 key 时仍可能消耗 CPU 和内存。大数据量下仍有性能影响。

Q: 如何恢复误删的数据? A: 若无 AOF/RDB 备份,无法恢复。必须做好持久化和定期备份。