密钥格式为客户|项目|任务|地点
我想搜索像这样的客户|* |任务| *
这可能吗?
我相信 KEYS 和 SCAN 命令将允许您找到与此类模式匹配的键。它支持像这样的 glob 样式模式:
如果您走这条路,请使用 SCAN。 KEYS 会阻止 Redis 命令在整个运行过程中运行的单个线程。 SCAN 批量拉回数据并更好地扩展。
redis.cloud:6379> SCAN 0 MATCH customer|*|task|* COUNT 100
1) "876"
2) 1) "customer|word|task|asdf"
您需要使用返回的号码多次调用 SCAN,直到返回 0。并非所有调用都会返回值:
redis.cloud:6379> SCAN 876 MATCH customer|*|task|* COUNT 100
1) "1023"
2) (empty array)
但是,您可能需要考虑将其存储为哈希或 JSON 而不是字符串并使用搜索。您可以使用 FT.CREATE 命令定义索引,然后使用 FT.SEARCH 命令查找您要查找的内容。
redis.cloud:6379> HSET customer:1 customer "Willy Wonka" project "Chocolate Consumption" task "Eat More Chocloate" location "United Kingdon"
redis.cloud:6379> FT.CREATE customer:index PREFIX 1 customer: SCHEMA customer TAG project TAG task TAG location TAG
redis.cloud:6379> FT.SEARCH customer:index "@project:{Choco*} @task:{Eat More Chocolate}"
希望有帮助。