Redis如何批量删除指定前缀的key
批量删除指定前缀的Key有两中方法,一种是借助 redis-cli
,另一种是通过 SCAN
命令来遍历所有匹配前缀的 key,并使用 DEL
命令逐个删除它们。
redis-cli
使用 Redis 自带的 redis-cli
命令行工具,你可以通过以下方式批量删除指定前缀的 key:
redis-cli KEYS "your_prefix*" | xargs redis-cli DEL
其中,your_prefix
是你要删除的 key 的前缀。
这个命令的作用是:
- 使用
KEYS
命令获取所有匹配前缀的 key 列表。 - 使用
xargs
命令将获取的 key 列表作为参数传递给后面的DEL
命令,从而逐个删除这些 key。
需要注意的是,使用 KEYS
命令获取所有匹配前缀的 key 列表可能会在有大量 key 的情况下影响性能,因为它会阻塞 Redis 服务器的其他操作。在生产环境中,如果可能的话,最好使用迭代方式删除 key,例如使用 Lua 脚本或者编写程序来执行删除操作,以避免性能问题。
编码方式
在 Redis 中,除了上面的方法,要批量删除指定前缀的 key,你还可以使用 SCAN
命令来遍历所有匹配前缀的 key,并使用 DEL
命令逐个删除它们。但是,需要注意的是,SCAN
命令是一个游标迭代命令,它可以帮助你逐步遍历大量的 key,从而避免一次性获取所有 key 导致的性能问题。
以下是在 Redis 中批量删除指定前缀的 key 的示例代码,使用了 Go 的 github.com/go-redis/redis
包:
package main import ( "context" "fmt" "log" "strings" "github.com/go-redis/redis/v8" ) func main() { ctx := context.Background() // 创建 Redis 客户端 client := redis.NewClient(&redis.Options{ Addr: "localhost:6379", // 你的 Redis 地址 DB: 0, // 使用的数据库编号 }) // 指定要删除的 key 的前缀 prefix := "your_prefix" // 使用 SCAN 命令遍历匹配前缀的 key iter := client.Scan(ctx, 0, prefix+"*", 0).Iterator() for iter.Next(ctx) { key := iter.Val() // 使用 DEL 命令删除 key if err := client.Del(ctx, key).Err(); err != nil { log.Printf("Failed to delete key %s: %v", key, err) } else { fmt.Printf("Deleted key: %s\n", key) } } if err := iter.Err(); err != nil { log.Fatal(err) } }
在上述代码中,就是先使用 SCAN
命令遍历所有匹配前缀的 key,然后逐个使用 DEL
命令删除它们。

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 恋水无意
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具