Redis数据库清理那些事儿,教你简单又实用的方法一步步搞定
- 问答
- 2026-01-07 00:13:49
- 18
(引用来源:Redis官方文档,以及常见的运维实践经验)
你是不是也遇到过这种情况?服务器突然变慢,查来查去发现是Redis把内存快占满了,这时候你就得赶紧给Redis“瘦身”了,别担心,这事儿没想象中那么复杂,今天我就用大白话,一步步教你几种简单又实用的清理方法,让你轻松搞定。
第一步:先搞清楚“家底”还剩多少
在动手清理之前,咱们得先看看现在Redis里到底用了多少内存,有没有哪些数据是特别占地方的,这就好比你要收拾屋子,总得先看看哪个房间最乱吧。
打开你的Redis命令行工具(比如用redis-cli),输入命令:info memory,你会看到一大堆信息,别慌,重点关注这两个:
used_memory:这是Redis当前实际使用的内存总量,就是你最关心的那个数字。used_memory_human:这个更友好,它会用M(兆)、G(吉)这样的单位显示,一眼就能看明白。
(引用来源:Redis INFO 命令说明)
第二步:找出那些“占着茅坑不拉屎”的Key
一些数据可能设置了过期时间但一直没被访问,或者根本就是些没用的陈年旧数据,我们可以用以下命令来扫描一下:
redis-cli --bigkeys 这个命令会帮你扫描整个数据库,找出哪种数据类型的Key最大,并列出最大的那几个,比如发现某个Hash键特别大,那你就可以重点检查它了。

redis-cli --scan --pattern ‘*’ | head -100 这个命令可以随机扫描并列出一些Key(这里例子是前100个),让你看看Key的命名和大概有哪些数据,你可以把 换成像 user:session:* 这样的模式,专门查看某一类Key。
第三步:开始动手清理(几种常用方法)
了解清楚情况后,就可以选择合适的方法清理了。
设置过期时间,让数据“自动消失”
这是最省心的方法,对于那些你知道在一定时间后就没用了的数据,比如用户登录凭证(session)、手机验证码、临时缓存等,在存入Redis时就直接给它设个“寿命”。
命令是:SET key value EX seconds (SET user:123:token “abc” EX 3600 就是1小时后过期)。
或者对已存在的Key设置:EXPIRE key seconds。

设好之后,Redis会自动在时间到了之后删除它们,完全不用你操心,Redis内部有策略会定期清理过期的Key。
(引用来源:Redis SET 和 EXPIRE 命令)
手动删除,来个“大扫除”
如果有些数据明确不需要了,那就直接删掉,可以用 DEL key 命令一个一个删。
但如果要批量删除符合某个模式的Key,比如删除所有以 “temp:cache:” 开头的Key,千万不要在命令行里用 KEYS temp:cache:* 再管道符删除!因为 KEYS 命令在数据量大时会阻塞其他请求,非常危险。
正确的方法是使用 SCAN 命令结合脚本来分批删除,或者直接用这个命令:
redis-cli --scan --pattern “temp:cache:*” | xargs redis-cli del
这个命令的意思是:先扫描出所有匹配的Key,然后一个个传给 DEL 命令删除。SCAN 命令是游标方式的,不会阻塞服务。

(引用来源:Redis SCAN 与 DEL 命令的结合使用)
终极武器——清空整个数据库
如果情况非常紧急,需要立刻释放所有内存,或者你确定某个数据库里的所有数据都可以不要了,可以用这个“核武器”。
FLUSHDB命令:清空当前你连接的这一个数据库的所有数据。FLUSHALL命令:清空Redis服务器上所有数据库的数据。(警告:这个命令杀伤力极大,一定要慎用!用之前务必确认无误!)
第四步:养成好习惯,防范于未然
清理毕竟是事后补救,最好的方式是让Redis一直保持“苗条”。
- 配置内存上限:在Redis的配置文件
redis.conf里,找到maxmemory这个参数,给它设置一个值,maxmemory 2gb,这样当内存用到2G时,Redis就会触发它的清理策略。 - 设置淘汰策略:光有上限还不够,还得告诉Redis内存满了之后怎么办,同样是配置文件里的
maxmemory-policy参数,常用的有:volatile-lru:从那些设置了过期时间的Key中,淘汰最近最少使用的。allkeys-lru:从所有Key中,淘汰最近最少使用的。volatile-ttl:淘汰剩余寿命最短的Key。 根据你的业务特点选一个合适的策略,这样即使你忘了手动清理,Redis也能自己腾出空间。
(引用来源:Redis配置文件中关于 maxmemory 和 maxmemory-policy 的说明)
最后的小提醒
清理数据前,如果条件允许,最好先备份一下数据(用 BGSAVE 命令生成RDB快照),尤其是执行 FLUSHDB 或 FLUSHALL 前,一定要万分小心,确认再确认,别一不小心把重要数据全搞没了。
好了,以上就是Redis数据库清理的常规操作,从查看状态到选择清理方法,再到日常配置预防,一步步来,你会发现管理Redis内存其实并不难,希望这些简单实用的方法能帮到你!
本文由颜泰平于2026-01-07发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://www.haoid.cn/wenda/75874.html
