redis地理位置Geospatial

相关命令

  • 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"

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值