基于redis的位置信息计算(经纬度)

[redis版本 >= 3.2]

写入经纬度信息

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

示例

将l1的位置信息写入location中
geoadd location 120.0742 30.2904 l1

将l2的位置信息写入location中
geoadd location 121.0742 31.2904 l2

查询指定key的经纬度

geopos key member [member ...]

示例

获取location中l1的位置
geopos location l1

输出

1) 1) "120.07420152425765991"
   2) "30.29040071848131532"

计算两个位置之间的举例

geodist key member1 member2 [unit]

返回两个地方的距离,可以指定单位,比如米m(默认),千米km,英里mi,英尺ft

示例

计算l1 l2之间的距离
geodist location l1 l2

输出

"146629.3499"

计算l1 l2之间的距离 km
geodist location l1 l2 km

输出

"146.6293"

中心点指定半径内的元素

指定中心置为坐标
georadius key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count]

给定的位置元素
georadiusbymember key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count]

参数

  • WITHDIST 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致
  • WITHCOORD 将位置元素的经度和维度也一并返回
  • WITHHASH 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大
  • COUNT 需要返回的元素数量
  • ASC 根据中心的位置, 按照从近到远的方式返回位置元素
  • DESC 根据中心的位置, 按照从远到近的方式返回位置元素

示例

获取location中以 120.0012 30.2321 为中心半径200km内的元素 返回距离和位置信息 按距离升序 取5条
georadius location 120.0012 30.2321 200 km WITHDIST WITHCOORD ASC COUNT 5

输出

1) 1) "l1"
   2) "9.5517"
   3) 1) "120.07420152425765991"
      2) "30.29040071848131532"
2) 1) "l2"
   2) "156.1170"
   3) 1) "121.07419878244400024"
      2) "31.29039891026372544"

georadiusbymember location l1 200 km WITHDIST WITHCOORD ASC COUNT 5

输出

1) 1) "l1"
   2) "0.0000"
   3) 1) "120.07420152425765991"
      2) "30.29040071848131532"
2) 1) "l2"
   2) "146.6293"
   3) 1) "121.07419878244400024"
      2) "31.29039891026372544"

删除location中的指定袁术

zrem key member [member ...]

示例
删除location中的l3元素
zrem location l3

你可能感兴趣的:(杂文)