自学内容网 自学内容网

Redis数据类型--GEO类型详解及应用

数据结构

Redis无论什么数据类型,存储的时候都是以键值对key-value形势存储,并且所有的key都是String类型,本文讨论的数据类型是value的数据类型。

GEO

概述:Redis GEO是Redis在3.2版本中新添加的特性,可以将经纬度格式的地理坐标存储到Redis中,并对这些坐标执行距离计算、范围查找等操作。

GEO常用命令:

命令描述
geoadd key longitude1 latitude1 member1 …向key中添加指定的地理位置:经度、纬度、位置名称 ,支持批量操作
geopos key member1 member2…查询key中指定元素的经纬度数据,支持批量操作
geodist key member1 member2… [mkm
georadius key longitude latitude radius [mkm
georadiusbymember key member radius [mkm
geohash key member1 member2…获取指定key中一个或多个member 的hash值

GEO实现原理:
GEO的数据结构是geohash,使用geohash将二维的经纬度数据编码成一维数据,再使用B树索引快速查找出需要的数据。

GEO存储结构:
GEO底层采用Sorted Set来实现,key存储元素信息,value存储经纬度信息(scroe:分数),支持按经纬度排序、按范围查找等。

GEO哈希编码:
由于经纬度由经度和纬度组成,而Sorted Set中的value值是float类型,则需要把经纬度最终转换为一个value值,需要对经纬度进行编码,GEO哈希编码的实现原理就是分别对经度和纬度进行编码,再将经纬度的编码合成一个最终的编码,将最终生成的编码值存入value。

GEO的应用场景:

  • 附近的人地点:各类社交软件附近的人,附近的商超、景点都可以可以通过Redis GEO快速实现。
  • 外卖配送服务:通过地址的经纬度信息,可以找到距离最近的配送员或仓库,实现对订单的合理分配。

GEO主要用于存储地理位置信息,并对存储的信息进行操作,凡是跟地理位置相关的业务场景,都可以尝试用GEO来解决。

如有不正确的地方请各位指出纠正。


原文地址:https://blog.csdn.net/weixin_42118323/article/details/136340790

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!