KEYS
语法
KEYS pattern
- 可用版本
- Redis 开源版 1.0.0
- 时间复杂度
- 在数据库中键名和给定模式长度有限的假设下,时间复杂度为 O(N),其中 N 是数据库中的键数量。
- ACL 类别
-
@keyspace
,@read
,@slow
,@dangerous
,
返回所有匹配 pattern
的键。
虽然此操作的时间复杂度为 O(N),但常数时间相当低。例如,在入门级笔记本电脑上运行的 Redis 可以在 40 毫秒内扫描一个包含 100 万个键的数据库。
警告:将 KEYS
命令视为在生产环境中应极其谨慎使用的命令。当对大型数据库执行此命令时,可能会严重影响性能。此命令旨在用于调试和特殊操作,例如更改键空间布局。请勿在常规应用程序代码中使用 KEYS
。如果您正在寻找在键空间的子集中查找键的方法,请考虑使用 SCAN
或 集合 (sets)。
支持的 glob 风格模式
h?llo
匹配hello
、hallo
和hxllo
h*llo
匹配hllo
和heeeello
h[ae]llo
匹配hello
和hallo,
但不匹配hillo
h[^e]llo
匹配hallo
,hbllo
, ... 但不匹配hello
h[a-b]llo
匹配hallo
和hbllo
如果要匹配特殊字符本身,请使用 \
进行转义。
使用 Redis 集群时,搜索会针对暗示单个槽的模式进行优化。如果模式只能匹配单个槽中的键,则 Redis 在搜索匹配模式的键时,只会遍历该槽中的键,而不是整个数据库。例如,对于模式 {a}h*llo
,Redis 只会尝试与槽 15495 中的键匹配,该槽由哈希标签 {a}
暗示。有关使用哈希标签的模式,请参阅集群规范中的哈希标签以获取更多信息。