清空Redis指定库最简单命令就是FLUSHDB,针对当前选中的数据库直接清空所有数据。比如先用SELECT 1选择库1,然后FLUSHDB就全清了。网友推荐:如果要清空所有库,用FLUSHALL,但小心点,这会把所有数据都删掉。实用技巧:用redis-cli --scan --pattern '*' | xargs redis-cli del 来批量删除key,速度快不卡顿。
网友分享:安全清空指定db
我用的是FLUSHDB命令,超级好使。先redis-cli,然后SELECT 你的db号,比如SELECT 0,输入FLUSHDB,回车就清空了。测试环境随便用,生产环境记得备份。另一个技巧:用CONFIG GET databases看总库数,然后逐个select + flushdb。
实用删除技巧,避免全删
不想全清指定库?用KEYS * | xargs redis-cli del,但KEYS在大库会慢死。用SCAN 0 MATCH * COUNT 1000循环scan再del,网友说这样不阻塞主进程。清空指定前缀key:redis-cli --scan --pattern 'prefix:*' | xargs redis-cli del。
一步到位清空db0
redis-cli -n 0 FLUSHDB,指定库号-n 0直接清db0,省得select。所有库:redis-cli FLUSHALL。技巧:写个脚本for i in {0..15}; do redis-cli -n $i FLUSHDB; done 清16个默认库。
常见坑和网友fix
FLUSHDB清了但内存没降?用INFO memory看,可能是碎片,restart或用MEMORY PURGE。cluster模式下flushdb只清当前node,用redis-cli --cluster flushdb小心。备份前清空:BGSAVE再操作。
懒人清空法
用redis-cli EVAL "return redis.call('flushdb')" 0 在lua里清,原子性好。或直接kill redis进程重启,但数据丢。网友爱用docker exec -it redis redis-cli -n 1 FLUSHDB,一行搞定容器里库。
FAQ
Q: FLUSHDB和FLUSHALL区别?
A: FLUSHDB清当前库,FLUSHALL清所有库。
Q: 清空后数据能恢复吗?
A: 没AOF或RDB备份就没了,记得先备份。
Q: 大库FLUSHDB卡住怎么办?
A: 用SCAN迭代删除,或重启实例。
Q: Windows怎么操作?
A: 同命令,用redis-cli.exe -n 0 FLUSHDB。