Redis08Geospatial(地理位置)类型


127.0.0.1:6379> GEOADD china:city 116.40 39.30 beijing (添加城市坐标信息)
(integer) 1
127.0.0.1:6379> GEOADD china:city 121.47 31.23 shanghai
(integer) 1
127.0.0.1:6379> GEOADD china:city 106.50 29.53 chongqin 114.05 22.52 shenzhen
(integer) 2
127.0.0.1:6379> GEOADD china:city 120.16 30.24 hangzhou 108.96 34.26 xian
(integer) 2

127.0.0.1:6379> geopos china:city beijing  (获取城市坐标)
1) 1) "116.39999896287918091"
2) "39.30000117660147652"

返回两个给定位置之间的距离。(GEODIST)

如果两个位置之间的其中一个不存在, 那么命令返回空值。

指定单位的参数 unit 必须是以下单位的其中一个:

  • m 表示单位为米。
  • km 表示单位为千米。
  • mi 表示单位为英里。
  • ft 表示单位为英尺。

127.0.0.1:6379> geodist china:city beijing shanghai
"1008342.6601"

127.0.0.1:6379> geodist china:city beijing shanghai km
"1008.3427"

 

127.0.0.1:6379> GEORADIUS china:city 110 30 500 km (以某个坐标为中心查询半径方圆500km内的城市,前提是数据已录入 china:city )
1) "chongqin"
2) "xian"

127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withdist
1) 1) "chongqin"
2) "341.9374"
2) 1) "xian"
2) "483.8340"

127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withcoord
1) 1) "chongqin"
2) 1) "106.49999767541885376"
2) "29.52999957900659211"
2) 1) "xian"
2) 1) "108.96000176668167114"
2) "34.25999964418929977"

附近的人

127.0.0.1:6379> GEORADIUS china:city 110 30 500 km count 1 (查询指定数量的附近的人)
1) "chongqin"

GEORADIUSBYMEMBER 

127.0.0.1:6379> GEORADIUSBYMEMBER china:city beijing 1000 km (以北京为中心查询方圆1000km里的城市)
1) "beijing"
2) "xian"

geohash一般很少使用

127.0.0.1:6379> geohash china:city beijing (将一个城市的经纬度转化为11位字符串返回,如果两个城市的字符串长得越像,那么距离越近)
1) "wwfz8drghe0"

geo的底层实现原理其实是Zset,我们可以通过zset操作geo

127.0.0.1:6379> zrem china:city beijing (删除一个元素)
(integer) 1
127.0.0.1:6379> ZRANGE china:city 0 -1
1) "chongqin"
2) "xian"
3) "shenzhen"
4) "hangzhou"
5) "shanghai"