相关命令
- GEOADD
- GEODIST
- GEOHASH
- GEOPOS
- GEORADIUS
- GEORADIUSBYMEMBER
geoadd
# geoadd 添加地理位置
# 规则 地球两极(南北极)无法直接添加,我们一般会下载城市数据,直接通过java查询一次性导入
# 官网文档: 有效经度: -180 到 180
# 有效维度: -85.05112827 到 85.05112827
# 参数 key 值 (经度 维度 名称)
127.0.0.1:6379> geoadd china:city 116.39 39.90 beijing
(integer) 1
127.0.0.1:6379> GEOADD china:city 121.48 31.40 shanghai
(integer) 1
127.0.0.1:6379> GEOADD china:city 120.21 30.20 hangzhou 113.88 22.55 shenzhen
(integer) 2
geopos
获取当前定位: 一定是一个坐标值
127.0.0.1:6379> GEOPOS china:city shanghai # 获取指定城市的经度纬度
1) 1) "121.48000091314315796"
2) "31.40000025319353938"
geodist
两个人直接的距离
127.0.0.1:6379> GEOPOS china:city shanghai # 获取两地直接的距离 (可以指定单位)
1) 1) "121.48000091314315796"
2) "31.40000025319353938"
127.0.0.1:6379> GEODIST china:city beijing hangzhou
"1133256.5850"
127.0.0.1:6379> GEODIST china:city beijing hangzhou km
"1133.2566"
groradius 以给定的经纬度为中心, 找出某一半径内的元素
我附近的人 通过半径来查询
获取指定数量的人 200
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km # 以100,30 这个经纬度为中心,寻找方圆1000Km的城市
1) "shenzhen"
2) "hangzhou"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km withdist # 显示到中间距离的位置
1) 1) "shenzhen"
2) "914.3335"
2) 1) "hangzhou"
2) "982.4071"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km withcoord # 显示他人的定位信息
1) 1) "shenzhen"
2) 1) "113.87999922037124634"
2) "22.5500010475923105"
2) 1) "hangzhou"
2) 1) "120.21000176668167114"
2) "30.19999988833350102"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km withcoord count 1 # 限制数量
1) 1) "shenzhen"
2) 1) "113.87999922037124634"
2) "22.5500010475923105"
GEORADIUSBYMEMBER 以元素为中心点,找指定范围内的元素
# 找出位于指定元素周围的其他元素
127.0.0.1:6379> GEORADIUSBYMEMBER china:city shanghai 1000 km
1) "hangzhou"
2) "shanghai"
GEO 底层的实现原理是 Zset 我们可以使用Zset命令来操作GEO
127.0.0.1:6379> ZRANGE china:city 0 -1
1) "shenzhen"
2) "hangzhou"
3) "shanghai"
4) "beijing"
127.0.0.1:6379> ZREM china:city shenzhen
(integer) 1
127.0.0.1:6379> ZRANGE china:city 0 -1
1) "hangzhou"
2) "shanghai"
3) "beijing"