*Redis DELEX 命令
DELEX 删除与指定模式匹配的所有键(支持正则表达式模式匹配删除)。
*语法
DELEX pattern
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pattern | String | 是 | 键名匹配模式,支持 *、? 等通配符 |
*返回值
- Integer:成功删除的键数量
- Error:模式语法错误或其他异常
*时间复杂度
O(N),N 为数据库中匹配的键数量。需谨慎使用,避免全库扫描。
*示例
*基本用法
> SET user:1 "Alice"
OK
> SET user:2 "Bob"
OK
> SET product:1 "Phone"
OK
> DELEX user:*
(integer) 2
*删除特定前缀
> SET cache:session:abc "data1"
OK
> SET cache:session:def "data2"
OK
> DELEX cache:session:*
(integer) 2
*无匹配键
> DELEX nonexistent:*
(integer) 0
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR wrong number of arguments | 未提供 pattern | 补充 pattern 参数 |
| ERR invalid pattern | 模式语法错误 | 检查通配符使用是否正确 |
*最佳实践
- ⚠️ 生产环境慎用:DELEX 会扫描全库匹配模式,大库场景下可能阻塞 Redis
- 优先使用 SCAN + DEL 组合进行渐进式删除
- 如需删除大量键,考虑使用 UNLINK 替代 DEL 以异步释放内存
- 在测试/开发环境清理临时数据时非常有用
*FAQ
Q1: DELEX 和 KEYS + DEL 有什么区别? A: DELEX 是原子操作,内部完成扫描和删除;KEYS + DEL 需要客户端多次往返,但 KEYS 同样危险(阻塞)。生产环境均不推荐直接使用。
Q2: DELEX 支持正则表达式吗?
A: 支持 Redis 风格的 glob 模式(*、?、[chars]),不支持完整正则表达式。
Q3: 删除大量键时会阻塞 Redis 吗? A: 是的。DELEX 是同步操作,匹配的键越多、每个键越大,阻塞时间越长。大库场景建议使用 SCAN + DEL/UNLINK 分批处理。