在 Redis 中查看符合特定模式的 key 有多种方法,以下是几种常用的方式:
KEYS pattern
示例:
KEYS user:* # 查找所有以"user:"开头的key
KEYS *session* # 查找所有包含"session"的key
KEYS ?? # 查找所有长度为2的key
⚠️ 警告:KEYS 命令会阻塞 Redis 服务器,在生产环境中可能造成性能问题。
SCAN 是一个增量式迭代命令,不会阻塞服务器:
SCAN cursor [MATCH pattern] [COUNT count]
示例:
SCAN 0 MATCH user:* COUNT 100
SCAN 返回两部分: 1. 下一次迭代的游标(0表示迭代结束) 2. 当前迭代找到的key列表
许多 Redis 图形化管理工具提供模式搜索功能,如: - Redis Desktop Manager - Another Redis Desktop Manager - RedisInsight
可以编写 Lua 脚本批量处理匹配的 key:
local keys = redis.call('KEYS', ARGV[1])
return keys
各种编程语言的 Redis 客户端库通常提供模式搜索功能,例如 Python 的 redis-py:
import redis
r = redis.Redis()
for key in r.scan_iter("user:*"):
print(key)
记住,Redis 是单线程的,长时间运行的命令会影响整体性能,因此应尽量避免在生产环境中使用阻塞式命令。