插件窝 干货文章 Redis 如何查看特定模式的 key

Redis 如何查看特定模式的 key

Redis 迭代 KEYS 命令 201    来源:    2025-03-29

Redis 查看特定模式 Key 的方法

在 Redis 中查看符合特定模式的 key 有多种方法,以下是几种常用的方式:

1. 使用 KEYS 命令(不推荐在生产环境使用)

KEYS pattern

示例:

KEYS user:*      # 查找所有以"user:"开头的key
KEYS *session*  # 查找所有包含"session"的key
KEYS ??         # 查找所有长度为2的key

⚠️ 警告:KEYS 命令会阻塞 Redis 服务器,在生产环境中可能造成性能问题。

2. 使用 SCAN 命令(推荐)

SCAN 是一个增量式迭代命令,不会阻塞服务器:

SCAN cursor [MATCH pattern] [COUNT count]

示例:

SCAN 0 MATCH user:* COUNT 100

SCAN 返回两部分: 1. 下一次迭代的游标(0表示迭代结束) 2. 当前迭代找到的key列表

3. 使用 Redis 图形化工具

许多 Redis 图形化管理工具提供模式搜索功能,如: - Redis Desktop Manager - Another Redis Desktop Manager - RedisInsight

4. 使用 Redis 的 Lua 脚本

可以编写 Lua 脚本批量处理匹配的 key:

local keys = redis.call('KEYS', ARGV[1])
return keys

5. 通过 Redis 客户端库

各种编程语言的 Redis 客户端库通常提供模式搜索功能,例如 Python 的 redis-py:

import redis
r = redis.Redis()
for key in r.scan_iter("user:*"):
    print(key)

最佳实践建议

  1. 生产环境:始终使用 SCAN 代替 KEYS
  2. 性能考虑:设置合理的 COUNT 参数(默认10,可适当增大)
  3. 大键空间:对于大型数据库,多次 SCAN 迭代可能更高效
  4. 权限控制:限制对 KEYS 命令的访问权限

记住,Redis 是单线程的,长时间运行的命令会影响整体性能,因此应尽量避免在生产环境中使用阻塞式命令。