欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

redis地理位置

程序员文章站 2023-09-28 19:26:22
redis 3.2版本中增加的最大功能就是对GEO(地理位置)的支持 当前业务中地图方面是调用高德api(云图),请求多少会有延迟 而redsigeo可以实现查找附近的终端以及测量两点之间的直线距离(有误差) 1、geoadd:增加某个地理位置的坐标。 2、geopos:获取某个地理位置的坐标。 3 ......

redis 3.2版本中增加的最大功能就是对geo(地理位置)的支持

当前业务中地图方面是调用高德api(云图),请求多少会有延迟  而redsigeo可以实现查找附近的终端以及测量两点之间的直线距离(有误差) 

  • 1、geoadd:增加某个地理位置的坐标。
  • 2、geopos:获取某个地理位置的坐标。
  • 3、geodist:获取两个地理位置的距离。
  • 4、georadius:根据给定地理位置坐标获取指定范围内的地理位置集合。
  • 5、georadiusbymember:根据给定地理位置获取指定范围内的地理位置集合。
  • 6、geohash:获取某个地理位置的geohash值。

geoadd

geoadd用来增加地理位置的坐标,可以批量添加地理位置,命令格式为:

geoadd key longitude latitude member [longitude latitude member ...]

key标识一个地理位置的集合。longitude latitude member标识了一个地理位置的坐标。longitude是地理位置的经度,latitude是地理位置的纬度。member是该地理位置的名称。geoadd可以批量给集合添加一批地理位置。

geopos

geopos可以获取地理位置的坐标,可以批量获取多个地理位置的坐标,命令格式为:

geopos key member [member ...]

geodist

geodist用来获取两个地理位置的距离,命令格式为:

geodist key member1 member2 [m|km|ft|mi]

单位可以指定为以下四种类型:

  • m:米,距离单位默认为米,不传递该参数则单位为米。
  • km:公里。
  • mi:英里。
  • ft:英尺。

georadius

georadius可以根据给定地理位置坐标获取指定范围内的地理位置集合。命令格式为:

georadius key longitude latitude radius [m|km|ft|mi] [withcoord] [withdist] [asc|desc] [withhash] [count count]

longitude latitude标识了地理位置的坐标,radius表示范围距离,距离单位可以为m|km|ft|mi,还有一些可选参数:

  • withcoord:传入withcoord参数,则返回结果会带上匹配位置的经纬度。
  • withdist:传入withdist参数,则返回结果会带上匹配位置与给定地理位置的距离。
  • asc|desc:默认结果是未排序的,传入asc为从近到远排序,传入desc为从远到近排序。
  • withhash:传入withhash参数,则返回结果会带上匹配位置的hash值。
  • count count:传入count参数,可以返回指定数量的结果。

georadiusbymember

georadiusbymember可以根据给定地理位置获取指定范围内的地理位置集合。georadius命令传递的是坐标,georadiusbymember传递的是地理位置。georadius更为灵活,可以获取任何坐标点范围内的地理位置。但是大多数时候,只是想获取某个地理位置附近的其他地理位置,使用georadiusbymember则更为方便。georadiusbymember命令格式为(命令可选参数与georadius含义一样):

georadiusbymember key member radius [m|km|ft|mi] [withcoord] [withdist] [asc|desc] [withhash] [count count]

geohash

geohash可以获取某个地理位置的geohash值。geohash是将二维的经纬度转换成字符串hash值的算法,后面会具体介绍geohash原理。可以批量获取多个地理位置的geohash值。命令格式为:

geohash key member [member ...]