具有多个条件的GEO查询

时间:2018-10-18 09:51:22

标签: redis

我正在考虑将Redis用于一种情况(出于性能和其他原因),使用“常规”数据库似乎很容易实现, 但我不知道如何使用Redis来实现它:

让我们想象一下,我有一堆商店,每个商店都有坐标和属性集,例如“自行车”,“汽车”,“鲜花”,“杂货”:

shop1: lon1, lat1, "bikes", "cars"
shop2: lon2, lat2, "flowers", "groceries"
shop3: lon3, lat3, "flowers", "groceries", "cars", "bikes"
...and etc.

我如何以最有效的方式找到5个最接近某个点的商店,这些商店具有“汽车”和“鲜花”属性?

仅查询附近某个位置的所有商店看起来很容易,但是如何仅过滤具有特定属性的商店呢?

1 个答案:

答案 0 :(得分:0)

最简单的方法是为每个类别/构面创建一个集合:

SADD bikes shop1 shop3
SADD cars shop1 shop3
SADD flowers shop2 shop3
SADD groceries shop2 shop3

执行GEORADIUS ... STORE <some-temporary-key>,然后您可以致电SINTER <some-temporary-key> cars flowers来回答您的查询。

请注意,“最简单”并不一定意味着效率最高,但这是另一回事。一种替代方法是使用RediSearch