KEYS
语法
KEYS pattern
- 可用版本
- 1.0.0
- 时间复杂度
- O(N),其中 N 是数据库中的键数,假设数据库中的键名和给定的模式具有有限的长度。
- ACL 类别
-
@keyspace
,@read
,@slow
,@dangerous
,
返回与pattern
匹配的所有键。
虽然此操作的时间复杂度为 O(N),但常数时间相当低。例如,在入门级笔记本电脑上运行的 Redis 可以在 40 毫秒内扫描一个包含 100 万个键的数据库。
警告:将KEYS
视为仅应在生产环境中谨慎使用的命令。当它针对大型数据库执行时,可能会破坏性能。此命令旨在用于调试和特殊操作,例如更改键空间布局。不要在常规应用程序代码中使用KEYS
。如果您正在寻找一种在键空间子集内查找键的方法,请考虑使用SCAN
或集合。
支持的 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}
。要使用带有哈希标签的模式,请参阅集群规范中的哈希标签,了解更多信息。