Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。
Redis GEO 操作方法有:一共就只有这几个方法
这是一个官方提供的例子,我只不过是将名字换成了上海和北京,经度纬度的话可以在线索索。但是如果实际应用的话肯定不会手动添加的,会使用接口直接导入,geodist就是返回两点之间的距离,我这个经纬度和城市是不匹配的,所以只要经纬度对的话,求出来的距离误差会很小,默认的单位是米。
redis> GEOADD china:city 13.361389 38.115556 "shanghai" 15.087269 37.502669 "chongqing" (integer) 2 redis> GEODIST china:city shanghai chongqing "166274.15156960039" redis> GEORADIUS china:city 15 37 100 km 1) "Catania" redis> GEORADIUS china:city 15 37 200 km 1) "Palermo" 2) "Catania" redis>
georadius 以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。
georadiusbymember 和 GEORADIUS 命令一样, 都可以找出位于指定范围内的元素, 但是 georadiusbymember 的中心点是由给定的位置元素决定的, 而不是使用经度和纬度来决定中心点。也就是说georadius是自定义经度纬度,而georadiusbymember是根据已有的城市来决定,可以附带下列参数
redis> GEOADD Sicily 13.583333 37.316667 "Agrigento" (integer) 1 redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania" (integer) 2 redis> GEORADIUSBYMEMBER Sicily Agrigento 100 km 1) "Agrigento" 2) "Palermo" redis>
geohash:
该命令将返回11个字符的Geohash字符串,所以没有精度Geohash,损失相比,使用内部52位表示。返回的geohashes具有以下特性:
geohash.org
网站使用,网址 http://geohash.org/<geohash-string>
。查询例子:Geohash - geohash.org/sqdtr74hyu0.redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania" (integer) 2 redis> GEOHASH Sicily Palermo Catania 1) "sqc8b49rny0" 2) "sqdtr74hyu0" redis>
虽然这个geo特殊类型比较简单,但是 实际应用非常多,例如附近的人,两个人之间的距离等等,但是我们需要注意的是geo的底层数据结构,他的底层数据结构为zset,也就是官方文档中的Sorted Sets 有序集合,那么也就是说zset的命令对geo同样有效,关于zset会在另一篇博客写。
还是如果有错误请联系!!!!