Geo是redis 3.2添加的特性,用于记录地理信息相关的功能。
用来存储经纬度、计算两地距离、范围计算等
例如:
geoadd 用来添加地理位置信息
geo key 经度 纬度 城市
geo cities:locations 116.28 39.55 beijing
geopos 获取一个位置的经纬度
geopos key 城市
geopos cities:locations beijing
geodist 获取两个位置的距离
geodist key 位置1 位置2 【unit:m米、km千米、mi英里、ft尺】
geodist cities:locations beijing tianjin m
georadius 传入经纬坐标可以查看半径内的地址坐标
GEORADIUS key 经度 纬度 radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]
WITHDIST
: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。WITHCOORD
: 将位置元素的经度和维度也一并返回。WITHHASH
: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。- count:设置返回的位置的数量,默认全部返回。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania" (integer) 2 redis> GEORADIUS Sicily 15 37 200 km WITHDIST 1) 1) "Palermo" 2) "190.4424" 2) 1) "Catania" 2) "56.4413" redis> GEORADIUS Sicily 15 37 200 km WITHCOORD 1) 1) "Palermo" 2) 1) "13.361389338970184" 2) "38.115556395496299" 2) 1) "Catania" 2) 1) "15.087267458438873" 2) "37.50266842333162" redis> GEORADIUS Sicily 15 37 200 km WITHDIST WITHCOORD 1) 1) "Palermo" 2) "190.4424" 3) 1) "13.361389338970184" 2) "38.115556395496299" 2) 1) "Catania" 2) "56.4413" 3) 1) "15.087267458438873" 2) "37.50266842333162" redis> |
georadiusbymember 获取指定半径位置元素的集合,和georadius不同的是,它传入的参数是地址名称。而不是经纬坐标。
georadiusbymember cities:locations beijing 150 km
返回
beijing
tianjin
tangshan