目录
目标
列举redis中与geo地理坐标相关的指令,包括作用、使用时需要注意的地方等。使用场景如根据坐标和半径去圈目标。
GEOADD
GEOADD key 经度 纬度 成员名 [经度 纬度 成员名]
时间复杂度
O(logN),N为sorted set中成员数量
作用
添加地理成员
返回
新增成员个数,不包括已存在
数据结构sorted set
可以使用sorted set指令,如ZREM进行删除
经纬度坐标必须经度在前
不存储与极点很近的坐标
经纬度范围
经度 -180 to 180
纬度 -85.05112878 to 85.05112878
经度bit和纬度bit交错后生成唯一的52bit整数,成为geohash,作为sorted set的score
GEODIST
GEODIST key mem1 mem2 [unit]
O(log(N))
返回两个成员的距离
单位
m for meters. default
km for kilometers.
mi for miles.
ft for feet.
返回
如果成员不存在,则返回NULL
针对具体单位的double值,用String形式表示
GEOHASH
GEOHASH key mem [mem]
O(log(N))
以数组形式返回参数所列成员的geohash值
返回的geohash使用11个字符构成的字符串表示
GEOPOS
GEOPOS key mem [mem]
O(log(N))
以数组形式返回参数所列成员的经纬度坐标对,成员不存在则返回NULL
GEORADIUS
GEORADIUS key longitude latitude radius unit [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC]
O(N+log(M)) N:位于以参数经纬度为中心,已参数半径为半径,构成的圆形之内的成员个数。M:sorted set中成员个数。
用于查找某坐标某半径内的成员
单位
m for meters. default
km for kilometers.
mi for miles.
ft for feet.
其他参数解释
WITHDIST 同时返回成员与某中心的距离
WITHCOORD 同时返回经纬度坐标
WITHHASH 同时返回geohash
ASC 按照与某中心距离从近到远排序,默认不排序
DESC 按照与某中心距离从远到近排序,默认不排序
COUNT count 返回前count成员
返回
如果无with参数,则返回成员名称的数组
如果有with参数,则返回数组的数组
GEORADIUSBYMEMBER
作用于GEORADIUS一致,只是使用具体成员名代替经纬度