大数据学习之Redis,十大数据类型的具体应用(五)

目录

[3.9 Redis地理空间(GEO)](#3.9 Redis地理空间(GEO))

简介

原理

Redis在3.2版本以后增加了地理位置的处理哦

命令

命令实操

如何获得某个地址的经纬度


3.9 Redis地理空间(GEO)

简介

移动互联网时代LBS应用越来越多,交友软件中附近的小姐姐、外卖软件中附近的美食店铺、高德地图附近的核酸检査点等等,那这种附近各种形形色色的XXX地址位置选择是如何实现的?

地球上的地理位置是使用二维的经纬度表示,经度范围(-180,180],纬度范围(-90,90],只要我们确定一个点的经纬度就可以名取得他在地球的位置。

例如滴滴打车,最直观的操作就是实时记录更新各个车的位置,然后当我们要找车时,在数据库中查找距离我们(坐标x0,yO)附近r公里范围内部的车辆

但是这样会有什么问题呢?

1.查询性能问题,如果并发高,数据量大这种查询是要搞垮数据库的

2.这个查询的是一个矩形访问,而不是以我为中心r公里为半径的圆形访问。

3.精准度的问题,我们知道地球不是平面坐标系,而是一个圆球,这种矩形计算在长距离计算时会有很大误差

原理
Redis在3.2版本以后增加了地理位置的处理哦
命令

GEOADD 多个经度(longitude)、纬度(latitude)、位置名称(member)添加到指定的 key 中

GEOPOS 从键里面返回所有给定位置元素的位置(经度和纬度)

GEODIST 返回两个给定位置之间的距离。

GEORADIUS 以给定的经纬度为中心,返回与中心的距离不超过给定最大距离的所有位置元素

GEORADIUSBYMEMBER 跟GEORADIUS类似

GEOHASH返回一个或多个位置元素的 Geohash 表示

命令实操
如何获得某个地址的经纬度
  • GEOADD

添加经纬度坐标

中文乱码如何处理

复制代码
GEOADD city 116.403963 39.915119 "天安门 "116.40341439.924091 "故宫" 116.024067 40.362639 "长城"
type city #输出 zset
zrange city 0 -1 #输出 "中文乱码" 

中文乱码解决方案

复制代码
#在进入redis 客户端的时候 加 --raw参数
redis-cli -a passwd --raw
zrange city 0 -1 #输出 天安门 故宫 长城
  • GEOPOS

返回经纬度

复制代码
GE0POS city 天安门 故宫 长城 #输出 116.403963 39.915119 116.40341439.924091 116.024067 40.362639
  • GEOHASH

返回坐标的geohash表示

原理:

  • geohash算法生成的base32编码值

  • 3维变2维变1维

复制代码
GEOHASH city 天安门 故宫 长城 #输出 wx4g0f6f2v0 wx4gogfqsjo wx4t85y1kto 
  • GEODIST

两个位置之间距离

复制代码
GE0DIST city 天安门 故宫 m #输出  998.8332
  • GEORADIUS

以半径为中心,查找附近的xxx

georadius 以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。

  • GEORADIUSBYMEMBER

    GE0RADIUSbymember city天安门
    10 km withdist withcoord count 10 withhash

相关推荐
独泪了无痕8 小时前
Spring Data Redis 快速上手
spring boot·redis·后端
IT19958 小时前
Fail2Ban 防护 MySQL 实战|登录失败 3 次,IP 封禁 24 小时
数据库·mysql
夕除8 小时前
redis--IO 多路复用(select + poll)
数据库·sql
行思理8 小时前
go语言学习难度及适合学习的人群
开发语言·学习·golang
lzhdim12 小时前
100条常用SQL语句
数据库·sql·mysql·mybatis
天河归来12 小时前
从原始消息到业务数据:三层数据架构的设计与实践
数据库·数据仓库·架构
数据库小学妹12 小时前
金融数据库成本怎么算?五笔钱加一张TCO表
数据库·金融行业·数据库选型·国产化替代·tco·金融数据库
楚山之石12 小时前
【Medical Image Analysis】深度学习医学图像合成综述:伪CT、合成MRI与合成PET的架构、性能与临床边界
图像处理·人工智能·学习·mr·mri
KaiwuDB12 小时前
KaiwuDB 分布式集群扩缩容,从原理到完整操作踩坑总结
运维·数据库·分布式
用户529589316685013 小时前
三马代驾实战:抢单池的 Redis 锁 + RabbitMQ 异步消费怎么做
redis