三种特殊数据类型-Geospatial地理位置

146 阅读1分钟

geospatical地理位置

应用场景: 定位 附近的人 打车距离计算?

redis的Geo在Redis3.2版本就推出了! 这个功能可以推算地理位置的信息,两地之间的距离,方圆几里的人.....

六个命令

  • geoadd命令

geoadd 添加地理位置 规则:两极无法直接添加,一般通过下载城市数据,通过java程序一次性导入!

  • 有效的经度从-180度到180度。
  • 有效的纬度从-85.05112878度到85.05112878度。
  • 当坐标位置超出上述指定范围时,该命令将会返回一个错误。

参数 key 值(纬度,精度,名称)

image.png

  • 获取指定城市的精度和纬度 geopos

image.png

127.0.0.1:6379> geopos china:city beijing
1) 1) "116.39999896287918091"
   2) "39.90000009167092543"
127.0.0.1:6379> geopos china:city beijing shenhzhen hangzhou
1) 1) "116.39999896287918091"
   2) "39.90000009167092543"
2) 1) "120.1600000262260437"
   2) "30.2400003229490224"
3) 1) "120.1600000262260437"
   2) "30.2400003229490224"
127.0.0.1:6379> 
  • 计算直线距离 geodist
    • m 表示单位为米
    • km 表示单位为千米
    • mi表示单位为英里
    • ft表示单位为英尺

image.png

  • 以给定的经纬度为中心 找出某一半径内的元素 georadius

拓展 : 查看附近的人. 通过半径来查询

  • 找出位于指定元素周围的其他元素 georadiusbymember

  • 返回一个或多个位置元素的geohash表示 geohash 该命令会返回一个11字符的geohash字符串,如果两个字符串越接近,则距离越近

geo底层的实现原理其实就是zSet 可以使用zset命令操作geo