如何查找以特定前缀开头且键名任意位置含指定值的Redis键?
在Redis中查找特定前缀且包含指定字符串的键
核心匹配逻辑
你可以通过Redis的通配符匹配语法实现需求,对应的匹配模式为:
travelpayouts-special-offers---*locale=en*
这个模式的作用:
travelpayouts-special-offers---:严格匹配键的固定前缀*:匹配任意长度的任意字符(包括空字符),前后各加一个*就能实现locale=en在键名任意位置出现的匹配要求
具体执行命令
1. 测试环境用KEYS快速查询
如果是测试环境或者Redis数据集较小,直接用KEYS命令即可一次性获取结果:
KEYS "travelpayouts-special-offers---*locale=en*"
该命令会直接返回所有符合条件的键,完全匹配你列出的三个示例键。
2. 生产环境用SCAN避免阻塞
由于KEYS会遍历整个Redis键空间,数据量大时会阻塞服务,生产环境推荐用SCAN分批迭代查询:
SCAN 0 MATCH "travelpayouts-special-offers---*locale=en*" COUNT 100
0:首次查询的起始游标,后续每次用返回的游标值继续迭代COUNT 100:提示Redis每次返回的键数量(非严格限制)- 重复执行命令直到返回的游标值为0,即完成所有符合条件键的遍历
匹配有效性验证
上述模式可以完美匹配你给出的所有示例键:
travelpayouts-special-offers---origin=MOW-destination=MCX-locale=entravelpayouts-special-offers---origin=MOW-locale=en-destination=MCXtravelpayouts-special-offers---locale=en-origin=MOW-destination=MCX
内容的提问来源于stack exchange,提问作者JamesJGoodwin
相关产品推荐
相关产品推荐

