GEOADD 命令将给定的空间元素(纬度、经度、名字)添加到指定的键里面。这些数据会以有序集合的形式被储存在键里面,从而使得像 GEORADIUS 和 GEORADIUSBYMEMBER 这样的命令可以在之后通过位置查询取得这些元素。
命令格式
GEOADD key longitude latitude member [longitude latitude member ...]
可用版本:>=3.2.0
时间复杂度:寻找每个位置元素的复杂度为 O(log(N)),其中 N 为给定键包含的位置元素数量
GEOADD 命令以标准的 x,y 格式接受参数,所以用户必须先输入经度,然后再输入纬度。GEOADD 能够记录的坐标是有限的,非常接近两极的区域是无法被索引的。精确的坐标限制由 EPSG:900913/EPSG:3785/OSGEO:41001 等坐标系统定义,具体如下:
- 有效的经度介于-180度至180度之间。
- 有效的纬度介于-85.05112878度至85.05112878度之间。
当用户尝试输入一个超出范围的经度或者纬度时,GEOADD 命令将返回一个错误。
Redis 里面没有 GEODEL 命令,你可以用 ZREM 命令来删除指定 key 的相应元素,因为 geo 索引结构本质上是一个有序集合。
命令返回值
新添加到键里面的空间元素数量,不包括那些已经存在且被更新的元素。
示例
redis> GEOADD Sicily 13.361389 38.115556 Palermo 15.087269 37.502669 Catania
(integer) 2
redis> GEORADIUS Sicily 15 37 100 km
1) "Catania"
redis> GEORADIUS Sicily 15 37 200 km
1) "Palermo"
2) "Catania"