我正在考虑将Redis用于一种情况(出于性能和其他原因),使用“常规”数据库似乎很容易实现, 但我不知道如何使用Redis来实现它:
让我们想象一下,我有一堆商店,每个商店都有坐标和属性集,例如“自行车”,“汽车”,“鲜花”,“杂货”:
shop1: lon1, lat1, "bikes", "cars"
shop2: lon2, lat2, "flowers", "groceries"
shop3: lon3, lat3, "flowers", "groceries", "cars", "bikes"
...and etc.
我如何以最有效的方式找到5个最接近某个点的商店,这些商店具有“汽车”和“鲜花”属性?
仅查询附近某个位置的所有商店看起来很容易,但是如何仅过滤具有特定属性的商店呢?
答案 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。