*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
*常见错误
- 生产误操作:开发/测试环境脚本误连生产执行 FLUSHDB。
- 未指定 DB:连接默认 DB0,FLUSHDB 清空 DB0 而非预期 DB。
*最佳实践
- rename-command 禁用或重命名:
rename-command FLUSHDB ""或rename-command FLUSHDB FLUSHDB_SECRET。 - 生产环境禁用:通过配置或网络隔离阻止生产实例执行 FLUSHDB/FLUSHALL。
- 优先用 UNLINK/SCAN+DEL:需要清理时用 SCAN 分批删除,而非 FLUSHDB。
- 异步模式:必须使用时加 ASYNC,减少阻塞。
*FAQ
Q: FLUSHDB 和 FLUSHALL 有什么区别? A: FLUSHDB 只清空当前 DB;FLUSHALL 清空所有 DB。两者都极其危险。
Q: FLUSHDB ASYNC 真的不阻塞吗? A: 立即返回,但后台线程删除大量 key 时仍可能消耗 CPU 和内存。大数据量下仍有性能影响。
Q: 如何恢复误删的数据? A: 若无 AOF/RDB 备份,无法恢复。必须做好持久化和定期备份。