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

news2024/9/23 13:17:14

目录

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1436569.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux、windows 安装 vue-cli

Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供: 通过 vue/cli 实现的交互式的项目脚手架。 通过 vue/cli vue/cli-service-global 实现的零配置原型开发。 一个运行时依赖 (vue/cli-service) 可升级; 基于 webpack 构建&#…

【C++】win11,OpenCV安装教程(VS2022)

1.下载 首先进入官网,下载对应的安装包,苹果系统就选IOS pack,微软系统就选Windows 下载地址:Releases - OpenCV 不方便外网下载的话可以下载我分享的百度网盘资源: 链接:https://pan.baidu.com/s/1lV7l…

2024年考PMP还有什么用?

PMP 是项目管理专业人士资格认证的意思,也是项目管理领域通用的证书, 做项目的基本都会去考。 要说 PMP 有啥作用? 个人感觉 PMP 证书更多的是跳槽、转行的敲门砖的作用,因为现在很多公司都要 PMP 证书,有了可以加分…

C#向数组指定索引位置插入新的元素值:自定义插入方法 vs List<T>.Add(T) 方法

目录 一、使用的方法 1.自定义插入方法 2.使用List.Add(T) 方法 二、实例 1.示例1:List.Add(T) 方法 2.示例:自定义插入方法 一、使用的方法 1.自定义插入方法 首先需要定义一个一维数组,然后修改数组的长度(这里使用Length属性获取…

uniapp 使用renderjs引入echarts

效果图&#xff1a; 1.1renderjs引入echarts 组件zmui-echarts.vue&#xff1a; <template><view class"zmui-echarts" :prop"option" :change:prop"echarts.delay"></view> </template><script>export defaul…

Qt代码添加日志管理的模块功能

在程序中一般需要添加日志管理的记录&#xff0c;在学习Httpserver的过程中&#xff0c;学习到了日志管理模块&#xff0c;将QtwebApp的日志模块提取出来可作为一般性程序的日志管理&#xff0c;记录实验的过程&#xff0c;项目源代码也附在后面。 项目运行结果 项目代码结构 参…

一周学会Django5 Python Web开发-Django5介绍及安装

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计10条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

进阶C语言-通讯录的实现

通讯录 🎈1.设计要求🎈2.程序实现🔭2.1打印菜单及初始化通讯录🔭2.2显示所有联系人🔭2.3查找指定的联系人🔭2.4删除指定的联系人🔭2.5查找指定的联系人🔭2.6修改指定联系人🔭2.7按照年龄排序(以此为例)🎈3.全部源码以及实现🎈1.设计要求 🌞通过前面…

2.4-学成在线内容管理之项目实战

内容管理模块 文章目录 内容管理模块9 项目实战9.1 实战环境9.1.1 实战流程 9.2 删除课程计划9.2.1 需求分析9.2.2 接口定义9.2.3 接口开发9.2.4 接口测试 9.3 课程计划排序9.3.1 需求分析9.3.2 接口定义9.3.3 接口开发9.3.4 接口测试 9.4 师资管理9.4.1 需求分析9.4.2 接口定义…

第2节、让电机转起来【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本节介绍用简单的方式&#xff0c;让步进电机转起来。其目的之一是对电机转动有直观的感受&#xff0c;二是熟悉整个开发流程。本系列教程必要的51单片机基础包括IO口操作、中断、定时器三个部分&#…

2020年通信工程师初级 综合能力 真题

文章目录 第1章 通信职业道德&#xff0c;1-4第2章 法律法规&#xff0c;5-16第3章 计算机应用基础&#xff0c;第5章 现代通信网&#xff0c;38英语题&#xff0c;91 第1章 通信职业道德&#xff0c;1-4 1、职业道德在形式上具有()特点。 A.一致性 B.统一性 C.多样性 D.一般性…

基于SpringBoot+Vue的外卖点餐管理系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

人生,总要读几本好书!

以前&#xff0c;没有重视过读书的重要性 但是自从进入老马的陪伴群之后&#xff0c;听了老马的一路成长经历&#xff0c;才发现&#xff0c;所谓的一鸣惊人&#xff0c;都是厚积薄发的表现 大佬们在出人头地之前&#xff0c;都是有过很长一段时间的自我提升的 这个提升的方…

如何利用边缘计算网关进行机床数据采集,以提高数据采集的效率和准确性-天拓四方

边缘计算网关集成了数据采集、处理和传输功能的嵌入式设备。它位于传感器和执行器组成的设备层与云计算平台之间&#xff0c;能够实时处理和响应本地设备的数据请求&#xff0c;减轻云平台的压力&#xff0c;提高数据处理的速度和效率。同时&#xff0c;边缘计算网关还可以将处…

Qt 的安装以及项目的创建

目录 Qt简介Qt 开发环境安装的过程环境变量的配置Qt SDK 中的重要的工具创建一个 Qt 项目 Qt简介 开始安装教程前&#xff0c;首先来了解一下什么是QT。 QT&#xff08;Quick Thought&#xff09;是一个基于Qt库的快速应用程序开发框架。它提供了一套完整的开发工具和库&…

DataX详解和架构介绍

系列文章目录 一、 DataX详解和架构介绍 二、 DataX源码分析 JobContainer 三、DataX源码分析 TaskGroupContainer 四、DataX源码分析 TaskExecutor 五、DataX源码分析 reader 六、DataX源码分析 writer 七、DataX源码分析 Channel 文章目录 系列文章目录DataX是什么&#xff…

spring boot(2.4.x之前版本)和spring cloud项目中配置文件的作用

为了防止理解问题&#xff0c;pom.xml 版本依赖如下 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version><relativePath/> <!--…

【开源】SpringBoot框架开发城市桥梁道路管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询城市桥梁4.2 新增城市桥梁4.3 编辑城市桥梁4.4 删除城市桥梁4.5 查询单个城市桥梁 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的城市桥梁道路管理系统&#xff0c;支持…

结构体的特殊声明和自引用

结构体的特殊声明 结构体我们通常是这么声明的&#xff1a; struct Student { char name[20]; int age; int num; }; 或者 struct Student { char name[20]; int age; int num; }s1, s2; 这是我们正常的声明方式&#xff0c; 也是正规的声明方式&#xff0c; 第二…

第三百一十一回

文章目录 1. 概念介绍2. 使用方法3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何在输入框中提示错误"相关的内容&#xff0c;本章回中将介绍如何在输入框中处理光标.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在使用TextField组件作为…