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

相关推荐
看山还是山,看水还是。15 分钟前
MySQL 管理
数据库·笔记·mysql·adb
fishmemory7sec21 分钟前
Koa2项目实战2(路由管理、项目结构优化)
数据库·mongodb·koa
momo小菜pa31 分钟前
【MySQL 09】表的内外连接
数据库·mysql
蒲公英100140 分钟前
vue3学习:axios输入城市名称查询该城市天气
前端·vue.js·学习
Jasonakeke40 分钟前
【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化
数据库·mysql
程序猿小D41 分钟前
第二百六十九节 JPA教程 - JPA查询OrderBy两个属性示例
java·开发语言·数据库·windows·jpa
训山1 小时前
【11】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-模块化语法与自定义组件
笔记·学习·华为·harmonyos·鸿蒙系统
小宇成长录1 小时前
Mysql:数据库和表增删查改基本语句
数据库·mysql·数据库备份
①个程序员1 小时前
thinkphp 学习记录
学习
团儿.2 小时前
解锁MySQL高可用新境界:深入探索MHA架构的无限魅力与实战部署
数据库·mysql·架构·mysql之mha架构