大数据学习之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

相关推荐
dazhong201234 分钟前
PLSQL 客户端连接 Oracle 数据库配置
数据库·oracle
机智的叉烧39 分钟前
前沿重器[57] | sigir24:大模型推荐系统的文本ID对齐学习
人工智能·学习·机器学习
量子-Alex2 小时前
【多模态聚类】用于无标记视频自监督学习的多模态聚类网络
学习·音视频·聚类
吉大一菜鸡2 小时前
FPGA学习(基于小梅哥Xilinx FPGA)学习笔记
笔记·学习·fpga开发
了一li3 小时前
Qt中的QProcess与Boost.Interprocess:实现多进程编程
服务器·数据库·qt
码农君莫笑3 小时前
信管通低代码信息管理系统应用平台
linux·数据库·windows·低代码·c#·.net·visual studio
别致的影分身3 小时前
使用C语言连接MySQL
数据库·mysql
爱吃西瓜的小菜鸡4 小时前
【C语言】判断回文
c语言·学习·算法
小A1595 小时前
STM32完全学习——SPI接口的FLASH(DMA模式)
stm32·嵌入式硬件·学习
岁岁岁平安5 小时前
spring学习(spring-DI(字符串或对象引用注入、集合注入)(XML配置))
java·学习·spring·依赖注入·集合注入·基本数据类型注入·引用数据类型注入