geospatial 地理位置
Redis 3.2推出
操作以GEO开头
GEOADD
# geoadd 添加地理位置(两极地区无法直接添加)
# 有效精度-180~180
# 有效纬度-85.05112878~85.05112878
# 参数 key 值()
127.0.0.1:6379> GEOADD china:city 116.40 39.90 beijing
(integer) 1
127.0.0.1:6379> GEOADD china:city 121.47 31.23 shanghai 106.50 29.53 chongqing
(integer) 2
127.0.0.1:6379> GEOADD china:city 114.05 22.52 shenzhen 120.16 30.24 hangzhou 108.96 34.26 xian
(integer) 3
127.0.0.1:6379>
GEOPOS
# GEOPOS 获取指定城市的精度和纬度
127.0.0.1:6379> GEOPOS china:city hangzhou chongqing
1) 1) "120.1600000262260437"
2) "30.2400003229490224"
2) 1) "106.49999767541885376"
2) "29.52999957900659211"
127.0.0.1:6379>
GEODIST
查看两地之间的直线距离,单位默认为m,也可以手动指定
- m 米
- km 千米
- mi 英里
- ft 英尺
# GEODIST
127.0.0.1:6379> GEODIST china:city beijing shanghai #北京到上海的直线距离
"1067378.7564"
127.0.0.1:6379> GEODIST china:city beijing shanghai km
"1067.3788"
127.0.0.1:6379>
GEORADIUS 以给定的经纬度为中心,找出某一半径内的元素
注:所有的城市数据都应存入china:city,此处只以录入的少量数据为例
# GEORADIUS
127.0.0.1:6379> GEORADIUS china:city 114 22 500 km #以114 22这个经纬度为中心,半径为500km范围内的城市
1) "shenzhen"
127.0.0.1:6379> GEORADIUS china:city 114 22 1000 km
1) "shenzhen"
127.0.0.1:6379> GEORADIUS china:city 114 22 1000 km withdist #到中心位置的距离
1) 1) "shenzhen"
2) "58.0662"
127.0.0.1:6379> GEORADIUS china:city 114 22 1000 km withcoord #附近城市的经纬度
1) 1) "shenzhen"
2) 1) "114.04999762773513794"
2) "22.5200000879503861"
127.0.0.1:6379> GEORADIUS china:city 114 22 1000 km withdist withcoord count 2 #距离、经纬度、筛选指定数量的结果
1) 1) "shenzhen"
2) "58.0662"
3) 1) "114.04999762773513794"
2) "22.5200000879503861"
127.0.0.1:6379>
GEORADIUSBYMEMBER
# 查找指定元素周围的其他元素
127.0.0.1:6379> GEORADIUSBYMEMBER china:city shanghai 1000 km
1) "hangzhou"
2) "shanghai"
127.0.0.1:6379>
GEOHASH
返回11个字符的geohash字符串
# GEOHASH 将二维的精度转换为一维的字符串(两个字符串越接近,表示距离越近)
127.0.0.1:6379> GEOHASH china:city hangzhou shenzhen
1) "wtmkn31bfb0"
2) "ws10578st80"
127.0.0.1:6379>
GEO底层的实现原理就是Zset
Redis官方文档中的GEO没有提供移除元素的操作,但可以通过zrem来移除元素
127.0.0.1:6379> ZRANGE china:city 0 -1
1) "chongqing"
2) "xian"
3) "shenzhen"
4) "hangzhou"
5) "shanghai"
6) "beijing"
127.0.0.1:6379> ZREM china:city shanghai # 移除指定的元素
(integer) 1
127.0.0.1:6379> ZRANGE china:city 0 -1
1) "chongqing"
2) "xian"
3) "shenzhen"
4) "hangzhou"
5) "beijing"
127.0.0.1:6379>
评论 (0)