我希望使用Redis的GEORADIUS
命令。
但是,此命令仅在给定经度和纬度周围的二维圆的范围内搜索。我还需要用高度搜索,从而在三维球体的范围内找到结果。
我如何在Redis中实现这一目标?
我相信你实际上要做的是在3D圆柱体内搜索(或者如果你考虑到地球的球形特性,可以选择某种圆锥体)。
Redis的地理空间索引本身不包含高度搜索,但您可以将该属性存储在其自己的排序集中作为分数。然后,您可以对海拔高度进行范围搜索(ZRANGEBYSCORE
),并将结果与半径查询中的结果进行交叉(ZINTER
)(提示:使用临时密钥进行STORE
结果)。
作为参考,这是我使用xyzsets in geo.lua的方法。