redis缓存怎么一键清理啊,命令行操作其实挺简单的,教你快速搞定
- 问答
- 2025-12-31 00:13:02
- 3
主要基于Redis官方文档中对KEYS、FLUSHALL、FLUSHDB等命令的说明,以及常见的运维实践经验。
第一招:最狠的,清空整个Redis——FLUSHALL命令
这个命令是啥意思呢?简单粗暴,就是不管你Redis服务器里面有多少个数据库(Redis默认有16个库,编号0-15),FLUSHALL 一声令下,所有库里的所有数据,全部清空,寸草不生,这相当于给你的Redis来了个格式化。
什么时候用这个? 一般是测试环境,或者你真的非常确定整个Redis的数据都可以不要了,想从头开始时再用,生产环境(也就是正在线上运行的系统)绝对要慎用,除非是遇到了极端情况,比如被攻击后产生了大量垃圾数据,或者做全量数据迁移前的准备。
具体怎么操作? 连接上你的Redis服务器,然后直接输入命令就行:
FLUSHALL
执行后,Redis会返回一个 OK,这就表示所有数据都已经被清除了,这个命令是同步执行的,也就是说,Redis会等到所有数据都删除完毕后才返回OK,如果你的Redis里数据量特别大(比如几十个GB),那么这个命令可能会让Redis“卡住”一小会儿,期间无法响应其他请求。
进阶用法:FLUSHALL ASYNC 为了解决上面说的“卡住”问题,新版本的Redis还提供了一个异步版的命令:
FLUSHALL ASYNC
这个命令的意思是,Redis会开一个后台线程去慢慢删除所有数据,而它自己会立刻返回OK,然后就可以继续处理其他请求了,这对于数据量大的生产环境来说更友好,避免了对服务造成长时间阻塞,如果条件允许,优先用这个异步版本。
第二招:温和点的,只清空当前数据库——FLUSHDB命令
我们并不想动整个Redis服务器,可能只是其中一个数据库的数据有问题或者没用了,想清理一下,这时候就用 FLUSHDB 命令,它只清空你当前连接的那个数据库。
怎么切换和查看当前是哪个数据库?
当你用redis-cli连接上Redis时,默认是在0号库,你可以用 SELECT 命令来切换数据库,SELECT 1 就切换到1号库,用 INFO keyspace 命令可以查看各个数据库的大致情况。

具体怎么操作? 确保你当前就在想清空的那个库里,然后输入:
FLUSHDB
同样,它也会返回 OK,表示当前这个库的数据都没了,和 FLUSHALL 一样,它也有同步和异步两种模式:
FLUSHDB # 同步清空当前库
FLUSHDB ASYNC # 异步清空当前库
选择逻辑和上面一样,数据量大怕阻塞就用 ASYNC。
第三招:精准打击,按关键字删除——DEL命令配合KEYS
前面两种都是“核弹”,有时候我们只想删除特定的一批数据,比如所有以某个前缀开头的key,这时候就需要组合拳了。
步骤是这样的:

-
先用KEYS命令查找:
KEYS命令可以按照通配符模式找出所有匹配的key,你想删除所有以user_session:开头的key(这通常用来存用户会话),可以这样:KEYS user_session:*执行这个命令后,Redis会把所有匹配的key列表显示出来。这里有个重要警告:
KEYS命令在生产环境要小心使用!如果你的Redis里key的数量非常庞大,这个命令会遍历所有key,可能导致Redis服务短暂卡顿,影响正常业务,所以最好在业务低峰期操作,或者有替代方案(比如用SCAN命令,但那个更复杂一点)。 -
再用DEL命令删除:拿到key的列表后,就可以用
DEL命令来删除了,你可以一个一个删,但更高效的是直接把上一步找到的所有key一次性传给DEL,在redis-cli里可以这样操作(这里用到了命令替换,是shell的功能):redis-cli KEYS "user_session:*" | xargs redis-cli DEL这条命令的意思是:先执行
KEYS "user_session:*"得到所有key,然后通过管道 传给xargs命令,xargs会把这些key作为参数,拼接到redis-cli DEL后面,最终形成一条像DEL key1 key2 key3 ...这样的命令来执行,效率很高。如果你就是在redis-cli界面里,不想退出,也可以使用Redis的
EVAL命令执行Lua脚本来实现,但那个对新手来说有点复杂,上面那种管道方式是最常见的。
重要提醒和安全建议
- 备份!备份!备份!:在执行任何清理操作,尤其是
FLUSHALL和FLUSHDB之前,如果数据有任何一丁点可能还需要,请务必先备份数据,可以使用BGSAVE命令在后台生成一个RDB快照文件。 - 生产环境权限控制:正规的公司里,生产环境的Redis通常不会让你有权限执行
FLUSHALL这种高危命令,或者会设置密码认证,不要轻易尝试。 - 理解后果:清楚你每个命令的操作范围,到底是清空所有库,还是当前库,还是部分key,别删错了后悔莫及。
- 考虑影响:清理缓存可能会瞬间给后端数据库(比如MySQL)带来巨大压力,因为所有查询都会直接打到数据库上,最好在业务量最低的时候(比如凌晨)操作,并确保数据库能扛住。
一键清理Redis缓存,最常用的就是 FLUSHALL(清全部)、FLUSHDB(清当前库)和 DEL 配合 KEYS(精准删除)这三板斧,根据你的实际需求,选择最合适的命令,并时刻记住安全第一的原则,就能快速搞定问题了。
本文由黎家于2025-12-31发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://www.haoid.cn/wenda/71563.html
