插件窝 干货文章 Redis keys * 命令的作用是什么

Redis keys * 命令的作用是什么

阻塞 匹配 Redis 使用 507    来源:    2025-03-29

Redis 的 KEYS * 命令用于列出当前数据库中所有符合给定模式(pattern)的键名。当使用通配符 * 时,它会返回数据库中所有的键(Key)。


主要特点:

  1. 通配符支持

    • * 匹配任意字符(包括空字符)。
    • ? 匹配单个字符。
    • [abc] 匹配指定字符(如 abc)。
    • 例如:KEYS user:* 会匹配所有以 user: 开头的键。
  2. 阻塞风险

    • KEYS 命令会遍历整个数据库,在数据量大的情况下会导致 Redis 短暂阻塞(单线程模型),可能影响生产环境性能。
  3. 设计用途

    • 主要用于调试或管理场景(如手动检查键是否存在)。
    • 禁止在生产环境中频繁使用

替代方案(推荐):

如果需要安全地列出或扫描键,请使用: 1. SCAN 命令: - 非阻塞的迭代式扫描,避免长时间阻塞。 - 示例: bash SCAN 0 MATCH "user:*" COUNT 100

  1. 通过客户端工具
    • 如 Redis 的 redis-cli --scan --pattern "user:*"

使用示例:

# 列出所有键(谨慎使用)
KEYS *

# 列出以 "cache:" 开头的键
KEYS cache:*

注意事项:

  • 生产环境禁用:可能导致性能问题,甚至触发 Redis 的慢查询。
  • 权限控制:限制普通用户执行 KEYS 命令(通过 Redis 的 ACL 或配置文件中禁用)。

如果有进一步的具体场景需求(如模糊删除键),可以结合 SCAN + DEL 安全操作。