教你快速一键搞定Redis里想删的那个Key,省时又方便
- 问答
- 2026-01-17 06:49:18
- 2
日常运维经验和Redis官方文档
想快速删掉Redis里某个key,不用折腾,直接看这儿,有时候你看着Redis里一堆数据,就想精准干掉某一个,比如那个叫“user:1000:cache”的破key,或者一堆名字像“temp_session:xxx”的临时玩意儿,最直接、最傻瓜的方法就是用DEL命令,但如果你要删的key很多,或者名字没规律,一个个敲DEL就得累死,下面这几种法子,保你省时省力,看情况选就行。
第一招:直接用DEL命令,适合单个或少量的key
这是最基础的,打开你的Redis客户端(比如用redis-cli),然后输入:
DEL your_key_name
要删掉“my_temp_data”,就输DEL my_temp_data,这命令立马就办,key没了就是没了,但记住,要是key不存在,它也不报错,只是返回0告诉你没删成啥,这招好处是直来直去,缺点是你得知道key的全名,而且只能一个一个来,要是你有十个八个key要删,手指头都得敲酸。
第二招:用通配符批量删,key名字有规律时特好用
这是重点!Redis自己没直接提供通配符删除命令,但我们可以用KEYS命令先找出所有匹配的key,然后再用DEL一起删掉,注意啊,KEYS命令在数据量大的时候可能会卡住Redis,因为它会遍历所有key,所以最好别在生产环境高峰时段用,但平时自己测试或者数据不多时,这招快得要命。
具体操作是分两步:

-
先用
KEYS加通配符找出你想删的那些key,通配符和文件名差不多,代表任意字符,代表一个字符,想找所有以“temp:”开头的key,就输:KEYS temp:*屏幕上会列出所有匹配的key,你先瞅一眼,别删错了。
-
确认无误后,把
KEYS的结果传给DEL,在redis-cli里,可以这么一条命令搞定:redis-cli KEYS "temp:*" | xargs redis-cli DEL这行命令的意思是:先执行
KEYS "temp:*"找出所有key,然后通过管道传给xargs,xargs会把每个key的名字作为参数塞给后面的DEL命令,相当于自动帮你执行了一串DEL key1 DEL key2 ...。如果你用的客户端支持执行Lua脚本(比如一些图形化工具),也可以直接跑个简单脚本:
EVAL "return redis.call('del', unpack(redis.call('keys', ARGV[1])))" 0 temp:*这个脚本效果一样,但更高效点,因为只在服务端跑一次。

第三招:用SCAN代替KEYS,安全第一
刚才说了KEYS可能阻塞服务,如果Redis里key贼多,你又怕出问题,就用SCAN命令。SCAN是渐进式遍历,不会一下子卡死Redis,不过用起来稍微麻烦点,得循环操作。
在命令行里,你可以写个简单循环(Linux或Mac的shell下):
redis-cli --scan --pattern "temp:*" | xargs -L 1000 redis-cli DEL
这里--scan --pattern就是代替KEYS,用游标分批找key,然后xargs -L 1000表示每1000个key一组来删,避免一次删太多,这法子适合生产环境,稳当。
第四招:靠编程搞定,灵活性强
如果你本来就是写代码操作Redis的,那在程序里批量删更简单,比如用Python的redis库:

import redis
r = redis.Redis(host='localhost', port=6379)
keys = r.keys("temp:*") # 找到所有匹配的key
if keys:
r.delete(*keys) # 一次性删除
或者用Node.js:
const redis = require("redis");
const client = redis.createClient();
async function deleteKeys() {
const keys = await client.keys("temp:*");
if (keys.length > 0) {
await client.del(keys);
}
}
deleteKeys();
编程的好处是能结合业务逻辑,比如你可以先判断key是否存在、记录日志啥的,再删。
重要提醒:删key前务必确认!
不管用哪招,手别抖!删数据不是闹着玩的,尤其是生产环境,建议先:
- 用
KEYS或SCAN预览一下要删的key列表,double-check。 - 如果可能,备份一下数据(比如用
BGSAVE生成RDB文件)。 - 考虑给key设置过期时间(用
EXPIRE),让它们自动失效,比手动删更省心。
特殊情况:想清空整个数据库?
如果你是想彻底清空当前数据库(所有key都没了),那更简单:
FLUSHDB:只清空当前选的这个数据库。FLUSHALL:清空Redis服务器上所有数据库。 这俩命令威力巨大,千万别乱用!一般只有测试环境或者确定要重置数据时才碰。
快速删key就这几种路子:单个删用DEL,批量删用KEYS或SCAN加管道,写代码就用对应库的删除方法,核心就是利用通配符匹配一批key,然后一次性送走,平时操作多留个心眼,别误删重要数据就行。
本文由盈壮于2026-01-17发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/82260.html
