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来解决。

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

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值