Redis 学习笔记(七)geospatial操作

1.geoadd key 经度(-180 ~ 180) 纬度(-85 ~ 85)val(cityName)
127.0.0.1:6379> GEOADD china:city 116.23 40.22 beijing
(integer) 1
127.0.0.1:6379> GEOADD china:city 113.27 23.15 guangzhou
(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 112.98 28.25 changsha
(integer) 1
127.0.0.1:6379> 
2.geopos key val(cityName)
127.0.0.1:6379> GEOPOS china:city changsha			# 获取指定城市经纬度
1) 1) "112.9800000786781311"
   2) "28.25000087963665152"
127.0.0.1:6379> GEOPOS china:city shanghai beijing		# 获得多个城市经纬度
1) 1) "121.48000091314315796"
   2) "31.40000025319353938"
2) 1) "116.23000055551528931"
   2) "40.2200010338739844"
127.0.0.1:6379> 
3.geodist key field1 field2 [type]
#  type  
#  m 表示米
#  km 表示千米
#  mi 表示英里
#  ft 表示英尺
127.0.0.1:6379> GEODIST china:city shanghai beijing km		#	上海距离北京的直线距离(千米)
"1088.7854"
127.0.0.1:6379> GEODIST china:city shanghai changsha m		# 	上海距离长沙的直线距离(米)
"891538.6819"
127.0.0.1:6379> GEODIST china:city shanghai guangzhou mi	#	上海距离广州的直线距离(英里)
"760.6409"
127.0.0.1:6379> GEODIST china:city changsha guangzhou ft	#	长沙到广州直线距离(英尺)
"1863508.9250"
127.0.0.1:6379> 
# 可以用来做两人之间的距离功能的实现。
4.georadius key 经度 纬度 距离 [type] 【withdist】
127.0.0.1:6379> GEORADIUS china:city 112.89 22.90 50 km
1) "guangzhou"
127.0.0.1:6379> GEORADIUS china:city 112.89 22.90 50 km withdist
1) 1) "guangzhou"
   2) "47.8155"
127.0.0.1:6379> 
5.georadius key 经度 纬度 距离 [type] 【withdist】 【withcoord】【count】【num】
# 展示别人的坐标
127.0.0.1:6379> GEORADIUS china:city 110.55 29.34 1000 km withcoord
1) 1) "guangzhou"
   2) 1) "113.27000051736831665"
      2) "23.14999996266175941"
2) 1) "changsha"
   2) 1) "112.9800000786781311"
      2) "28.25000087963665152"
      
      ##########################综合查询#################################    
      
127.0.0.1:6379> GEORADIUS china:city 110.55 29.34 1000 km withdist withcoord count 1  #筛选一条
1) 1) "changsha"
   2) "266.0743"
   3) 1) "112.9800000786781311"
      2) "28.25000087963665152"
127.0.0.1:6379> GEORADIUS china:city 110.55 29.34 1000 km withdist withcoord count 2  #筛选两条
1) 1) "changsha"
   2) "266.0743"
   3) 1) "112.9800000786781311"
      2) "28.25000087963665152"
2) 1) "guangzhou"
   2) "739.9476"
   3) 1) "113.27000051736831665"
      2) "23.14999996266175941"
127.0.0.1:6379> 
6.geohash key val(cityName)
127.0.0.1:6379> GEOHASH china:city guangzhou changsha
1) "ws0e9w2dw20"
2) "wt02dyv80v0"
127.0.0.1:6379>
# 如果两个字符串越接近,则表示距离越近
7.GEORADIUSBYMEMBER key val 距离 [type]
127.0.0.1:6379> GEORADIUSBYMEMBER china:city guangzhou 2000 km
1) "guangzhou"
2) "changsha"
3) "shanghai"
127.0.0.1:6379> GEORADIUSBYMEMBER china:city guangzhou 500 km
1) "guangzhou"
127.0.0.1:6379> GEODIST china:city guangzhou changsha km
"567.9975"
127.0.0.1:6379> 
8.底层原理(Zset)
# 	其实geo的底层原理就是Zset,可以支持Zset中所有的命令!
127.0.0.1:6379> ZRANGEBYSCORE china:city -inf +inf		# 	升序排序
1) "guangzhou"
2) "changsha"
3) "shanghai"
4) "beijing"
127.0.0.1:6379> ZRANGEBYSCORE china:city -inf +inf withscores	#  升序带数据排序
1) "guangzhou"
2) "4046533960965644"
3) "changsha"
4) "4050902071104876"
5) "shanghai"
6) "4054807767553238"
7) "beijing"
8) "4069896043648669"
127.0.0.1:6379> ZREM china:city beijing		#	移除北京元素
(integer) 1
127.0.0.1:6379> ZREVRANGE china:city 0 -1		#	查看所有
1) "shanghai"
2) "changsha"
3) "guangzhou"
127.0.0.1:6379>
9.GEORADIUSBYMEMBER 与 GEORADIUS 区别

在这里插入图片描述
补充:GEORADIUSBYMEMBER 表示可以精确地点搜索方圆距离内的事务,GEORADIUS 可以精确定点需要查询的经纬度方圆距离内的事物。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值