1. Geospatial1.1 添加数据:geoadd 1.2 查询:geopos 1.3 两个给定位置之间的距离:1.2 半径查询:GEORADIUS 1.3 查询指定元素周围的其他元素:GEORADIUSBYMEMBER 1.4 将二维的经纬度换为一维的字符串:GEOHASH 1.5 补充
1. Geospatial
- 有效的经度从-180度到180度。
- 有效的纬度从-85.05112878度到85.05112878度。
当坐标位置超出上述指定范围时,该命令将会返回一个错误。
1.1 添加数据:geoadd
# getadd 添加地理位置 # 规则:两极无法直接添加 # 参数 (纬度、经度、名称) 127.0.0.1:6379> geoadd china:city 116.40 39.00 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 chongqing 114.05 22.52 shenzhen (integer) 2 127.0.0.1:6379> geoadd china:city 120.16 30.04 hangzhou (integer) 1
1.2 查询:geopos
127.0.0.1:6379> geopos china:city beijing 1) 1) "116.39999896287918091" 2) "38.99999918434559731" 127.0.0.1:6379> geopos china:city beijing chongqing 1) 1) "116.39999896287918091" 2) "38.99999918434559731" 2) 1) "106.49999767541885376" 2) "29.52999957900659211"
1.3 两个给定位置之间的距离:
- m 表示单位为米。
- km 表示单位为千米。
- mi 表示单位为英里。
- ft 表示单位为英尺。
127.0.0.1:6379> GEODIST china:city beijing shanghai "979192.0181" 127.0.0.1:6379> GEODIST china:city beijing shanghai km "979.1920"
1.2 半径查询:GEORADIUS
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km 1) "chongqing" 2) "shenzhen" 3) "hangzhou" 127.0.0.1:6379> GEORADIUS china:city 110 30 500 km 1) "chongqing" # 查询带上距离 127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withdist 1) 1) "chongqing" 2) "341.9374" # 查询带上经纬度 127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withcoord 1) 1) "chongqing" 2) 1) "106.49999767541885376" 2) "29.52999957900659211" # 指定数量 127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km withcoord count 2 1) 1) "chongqing" 2) 1) "106.49999767541885376" 2) "29.52999957900659211" 2) 1) "shenzhen" 2) 1) "114.04999762773513794" 2) "22.5200000879503861"
1.3 查询指定元素周围的其他元素:GEORADIUSBYMEMBER
127.0.0.1:6379> GEORADIUSBYMEMBER china:city beijing 1000 km 1) "beijing" 2) "shanghai"
1.4 将二维的经纬度换为一维的字符串:GEOHASH
字符串越接近,那么距离越近。
127.0.0.1:6379> GEOHASH china:city beijing chongqing 1) "wwfvbexzkw0" 2) "wm5xzrybty0"
1.5 补充
GEO底层实现原理就是Zset,可以使用Zset命令操作geo
# 查询所有 127.0.0.1:6379> ZRANGE china:city 0 -1 1) "chongqing" 2) "shenzhen" 3) "hangzhou" 4) "shanghai" 5) "beijing" # 删除指定元素 127.0.0.1:6379> zrem china:city beijing (integer) 1 127.0.0.1:6379> ZRANGE china:city 0 -1 1) "chongqing" 2) "shenzhen" 3) "hangzhou" 4) "shanghai"