redis geo

最后更新:2019-06-20

添加地理位置信息

geo add key longitude latitude member [longitude latitude member ...]
127.0.0.1:6379> geoadd cities:locations 116.28 39.55 beijing
(integer) 1 //成功个数
127.0.0.1:6379> geoadd cities:locations 116.28 39.55 beijing
(integer) 0 //因为已经包括beijing,所以返回0

获取地理位置信息

geopos key member [member ...]
127.0.0.1:6379> geopos cities:locations beijing
1) 1) "116.28000229597091675"
   2) "39.5500007245470826"

获取两个地理位置的距离

geodist key member1 member2 [unit]

unit代表返回结果的单位

  • m 米
  • km 公里
  • mi 英里
  • ft 尺
127.0.0.1:6379> geopos cities:locations beijing
1) 1) "116.28000229597091675"
   2) "39.5500007245470826"
127.0.0.1:6379> geodist cities:locations beijing tianjing km
"89.2061"
127.0.0.1:6379> geodist cities:locations beijing tianjing
"89206.0576"

获取指定位置范围内的地理信息位置集合

GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key] 

GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]  
  • WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。
  • WITHCOORD: 将位置元素的经度和维度也一并返回。
  • WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
  • COUNT count 指定返回结果的数量
  • asc desc 按距离中心节点的距离做生序和降序
  • store key 将结果的地理位置信息保存到指定键
  • storedist key 将返回结果里中心节点的距离保存到指定键

获取geohash

GEOHASH key member [member ...] 

返回一个或多个位置元素的 Geohash 表示。

通常使用表示位置的元素使用不同的技术,使用Geohash位置52点整数编码。由于编码和解码过程中所使用的初始最小和最大坐标不同,编码的编码也不同于标准。此命令返回一个标准的Geohash

参考资料

《Redis开发与运维》

Edgar

Edgar
一个略懂Java的小菜比