Redis的GeoHash模块

Redis的GeoHash模块

Redis提供的geo指令只有6个

  • geoadd 携带集合名称以及多个经纬度名称的三元组。(geoadd company 116.48105 39.996794 jujin或者 geoadd company 116.562108 39.787602 jd 116.334255 40.027400 xiaomi)
  • geodist 可以用来计算两个元素之间的距离,携带集合名称、两个名称和距离单位(geodist company juejin xiaomi km)
  • geopos 可以获取集合中任意元素的经纬度坐标,可以一次获取多个(geopos company juejin)
  • geohash 可以获取元素经纬度编码字符串。(geohash company juejin)

  • georadiusbymember 可以用来查询指定元素附件的其他元素(georadiusbymember company juejin 20 km count 3 asc 范围20公里以内最多3个元素按距离正排,不会排除自己)

  • georadius 根据元素查询附近的元素(georadius company 116.514202 39.905409 20 km withdist count 3 asc)

在一个地图应用中,车的数据,餐馆的数据可能会很大,如果使用redis的geo数据结构,他们将被全部放在一个zset集合里,在集群环境中,集合可能会从一个节点迁移到另外一个节点,如单个KEY对应的数据过大,会对集群的迁移工作造成较大的影响,在集群环境中单个key对应的数据量不宜超过1MB否则会导致集群迁移出现卡顿现象,影响线上服务。

建议geo的数据使用单独的Redis实例部署,不使用集群环境。 如果数据量过大建议按照国家,省市区拆分

标签:
作者:华传财
舞台上有你,就演好角色; 舞台上没你,就静静地做观众;

已有 0 位网友参与,快来吐槽:

发表评论