Geospatital
1.添加地理位置:geoadd
将指定的地理空间位置(经度,纬度、名称)添加到指定的key中。
- 有效的经度从-180度到180度。
- 有效的纬度从-85.05112878度到85.05112878度
geoadd chan:city 116.40 39.30 bejing
(integer) 1
127.0.0.1:6379> geoadd chan:city 121.47 31.23 shanghai
(integer) 1
127.0.0.1:6379> geoadd chan:city 106.50 29.53 chongqing 114.05 22.54 shengzheng
(integer) 2
2.获取指定元素的经纬度:geopos
127.0.0.1:6379> geopos chan:city bejing
1) 1) "116.39999896287918091"
2) "39.30000117660147652"
127.0.0.1:6379> geopos chan:city shengzheng
1) 1) "114.04999762773513794"
2) "22.53999903789756587"
3.获取两个城市之间的直线距离:geodist
- m 表示单位为米。
- km 表示单位为千米。
- mi 表示单位为英里。
- ft 表示单位为英尺
127.0.0.1:6379> geodist chan:city bejing shanghai
"1008342.6601"
127.0.0.1:6379> geodist chan:city bejing shanghai km
"1008.3427"
4 .以给定的经纬度为中心,与中心的距离不超过给定最大距离的所有位置元素:georadius
127.0.0.1:6379> georadius chan:city 110 30 1000 km
1) "chongqing"
2) "xian"
3) "shengzheng"
4) "hangzhou"
127.0.0.1:6379> georadius chan:city 110 30 500 km
1) "chongqing"
2) "xian"
127.0.0.1:6379> georadius chan:city 110 30 500 km count 1 #限定一个
1) "chongqing"
127.0.0.1:6379> georadius chan:city 110 30 500 km withcoord withdist count 1 #带上经纬度 ,直线距离 ,限定一个
1) 1) "chongqing"
2) "341.9374"
3) 1) "106.49999767541885376"
2) "29.52999957900659211"
5.以某一个元素为中心,与中心的距离不超过给定最大距离的所有位置元素:georadiusbymember
127.0.0.1:6379> GEORADIUSBYMEMBER chan:city shanghai 400 km
1) "hangzhou"
2) "shanghai"
原理:Geo的底层实现原理就是ztree ,所有可以使用ztree的方式来删除和查询所有
6.查询: zrange
127.0.0.1:6379> zrange chan:city 0 -1
1) "chongqing"
2) "xian"
3) "shengzheng"
4) "hangzhou"
5) "shanghai"
6) "bejing"
7.删除:zrem
127.0.0.1:6379> zrem chan:city xian
(integer) 1
127.0.0.1:6379> zrange chan:city 0 -1
1) "chongqing"
2) "shengzheng"
3) "hangzhou"
4) "shanghai"
5) "bejing"