Redis(九):Redis特殊类型之geospatial

2022-12-01 08:44:44 浏览数 (1)

朋友的定位,附近的人,位置共享,打车距离 redis在3.2就已经推出了geospatial!两地之间的距离,方圆几里的人!都可以用它实现 这个需要把你所在地的经纬度输进去,我们可以在http://www.jsons.cn/lngcode/进行查询!

1、geospatial的六个命令

1.1、GEOADD

代码语言:javascript复制
127.0.0.1:6379> geoadd china:city 39.90 116.40 beijing	//添加地理位置(北京)
(integer) 1
127.0.0.1:6379> geoadd china:city 31.23 1216.47 shanghai
(error) ERR invalid longitude,latitude pair 1216.470000,31.230000
127.0.0.1:6379> geoadd china:city 31.23 121.47 shanghai
(integer) 1
127.0.0.1:6379> geoadd china:city 106.50 29.53 chongqing
(integer) 1
127.0.0.1:6379> geoadd china:city 22.52 114.05 shenzhen 18.24 109.50 sanya
(integer) 2

参数 key 纬度 经度 名称 ;有效的经度纬度 ps:两极无法添加

1.2、GROPOS

代码语言:javascript复制
127.0.0.1:6379> GEOPOS china:city beijing	//获取指定的经纬度
1) 1) "116.39999896287918091"
   2) "39.90000009167092543"
127.0.0.1:6379> GEOPOS china:city shanghai
1) 1) "121.47000163793563843"
   2) "31.22999903975783553"

获得当前定位(坐标值)

1.3、DEODIST

代码语言:javascript复制
127.0.0.1:6379> GEODIST china:city beijing shanghai	//两地(北京上海)的直线距离(默认单位是m)
"1067378.7564"
127.0.0.1:6379> GEODIST china:city beijing shanghai km
"1067.3788"

1.4、GEOEADIUS

代码语言:javascript复制
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km	//一一个点为中心查找半径范围内的城市
1) "chongqing"
2) "shenzhen"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km withdist	//显示距离
1) 1) "chongqing"
   2) "341.9374"
2) 1) "shenzhen"
   2) "924.6408"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km withcoord	//显示目标的位置
1) 1) "chongqing"
   2) 1) "106.49999767541885376"
      2) "29.52999957900659211"
2) 1) "shenzhen"
   2) 1) "114.04999762773513794"
      2) "22.5200000879503861"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km withcoord count 1	//筛选指定结果
1) 1) "chongqing"
   2) 1) "106.49999767541885376"
      2) "29.52999957900659211"

附近的人,通过半径来查询

1.5、GEORADIUSBYMEMBER

代码语言:javascript复制
127.0.0.1:6379> GEORADIUSBYMEMBER china:city beijing 2000 km	//找出指定位置周围的
1) "chongqing"
2) "shenzhen"
3) "shanghai"
4) "beijing"

更接近于附近的人的功能!

1.6、GEOHASH

代码语言:javascript复制
127.0.0.1:6379> GEOHASH china:city beijing chongqing	//把经纬度转换为字符串,字符串越长越精确
1) "wx4fbxxfke0"	//返回当前经纬度的字符串	
2) "wm5xzrybty0"

1.7、查看和删除

代码语言:javascript复制
127.0.0.1:6379> ZRANGE china:city 0 -1	//查询地图中全部元素
1) "sanya"
2) "chongqing"
3) "shenzhen"
4) "shanghai"
5) "beijing"
127.0.0.1:6379> ZREM china:city chongqing	//删除
(integer) 1
127.0.0.1:6379> ZRANGE china:city 0 -1
1) "sanya"
2) "shenzhen"
3) "shanghai"
4) "beijing"

2、总结

有效的经度从-180度到180度。 有效的纬度从-85.05112878度到85.05112878度。

指定单位的参数 unit 必须是以下单位的其中一个:

m 表示单位为米。 km 表示单位为千米。 mi 表示单位为英里。 ft 表示单位为英尺。

0 人点赞