Redis——GEOADD

时间复杂度:每一个元素添加是O(log(N)) ,N是sorted set的元素数量。


作用

    将指定的地理空间位置(纬度、经度、名称)添加到指定的key中。这些数据将会存储到sorted set这样的目的是为了方便使用GEORADIUS或者GEORADIUSBYMEMBER命令对数据进行半径查询等操作。


规则

    该命令以采用标准格式的参数x,y,所以经度必须在纬度之前。这些坐标的限制是可以被编入索引的,区域面积可以很接近极点但是不能索引。

  • 有效的经度从-180度到180度。

  • 有效的纬度从-85.05112878度到85.05112878度。


工作原理

    sorted set使用一种称为Geohash的技术进行填充。经度和纬度的位是交错的,以形成一个独特的52位整数. 我们知道,一个sorted set 的double score可以代表一个52位的整数,而不会失去精度。

    这种格式允许半径查询检查的1 + 8个领域需要覆盖整个半径,并丢弃元素以外的半径。通过计算该区域的范围,通过计算所涵盖的范围,从不太重要的部分的排序集的得分,并计算得分范围为每个区域的sorted set中的查询。


命令

    GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"


    GEODIST Sicily Palermo Catania

    GEORADIUS Sicily 15 37 100 km

    GEORADIUS Sicily 15 37 200 km



评论

© dzxlovelar | Powered by LOFTER