*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 分批处理。