数据库
首页 > 数据库> > Redis详解之特殊数据类型GEO及底层数据结构

Redis详解之特殊数据类型GEO及底层数据结构

作者:互联网

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> 

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具有以下特性:

  1. 他们可以缩短从右边的字符。它将失去精度,但仍将指向同一地区。
  2. 它可以在 geohash.org 网站使用,网址 http://geohash.org/<geohash-string>。查询例子:Geohash - geohash.org/sqdtr74hyu0.
  3. 与类似的前缀字符串是附近,但相反的是不正确的,这是可能的,用不同的前缀字符串附近。
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会在另一篇博客写。

还是如果有错误请联系!!!!

标签:返回,Palermo,Redis,位置,redis,geohash,Catania,数据类型,GEO
来源: https://blog.csdn.net/m0_52174905/article/details/120577653