首页 > 数据库 >使用Redis计算两点经纬度距离

使用Redis计算两点经纬度距离

时间:2024-06-08 14:58:17浏览次数:12  
标签:Palermo 经纬度 GEODIST Redis locations 距离 GEOADD 两点 Catania

Redis的GEO特性允许您存储地理位置信息并执行地理空间查询。这其中包括了计算两个地理位置之间的距离。以下是如何使用Redis中的相关命令来执行这项任务的详细解释。

案例:

步骤 1:添加地理位置数据

使用GEOADD命令向Redis添加地理位置数据。例如,我们添加两个城市的经纬度:

GEOADD locations 13.361389 38.115556 "Palermo"
GEOADD locations 15.087269 37.502669 "Catania"

这里,locations是有序集合的名称,13.361389 38.11555615.087269 37.502669分别是Palermo和Catania的经纬度,而"Palermo""Catania"是对应的名称。

步骤 2:计算距离

使用GEODIST命令计算两个地理位置之间的距离。你可以指定距离的单位,如千米(km)、米(m)、英里(mi)或英尺(ft)。以下是计算Palermo和Catania之间距离的命令:

GEODIST locations Palermo Catania km

这将返回Palermo和Catania之间的距离,单位为千米。如果你想以米为单位,可以这样操作:

GEODIST locations Palermo Catania m

步骤 3:查看结果

执行上述GEODIST命令后,Redis将返回一个浮点数,表示两个地点之间的直线距离。例如,你可能会得到以下输出:

"166274.21075173264"

注意:

这里计算的是两个点的直线距离。

说明:

GEOADD 命令

GEOADD命令用于将指定的地理空间位置(经度、纬度、位置名称)添加到指定的key中。

GEOADD key longitude latitude member
  • key 是你所选择存储位置数据的键。
  • longitude 和 latitude 分别表示地理位置的经度和纬度。
  • member 是一个用于唯一标识这个地理位置的名称。

例如:

GEOADD locations 13.361389 38.115556 "Palermo"

这个命令将一个名为"Palermo"的地点,其经纬度为38.115556N, 13.361389E,添加到locations这个键中。

GEODIST 命令

GEODIST命令用于计算两个地理位置成员之间的距离。

GEODIST key member1 member2 [unit]
  • key 是包含地理空间信息的键。
  • member1 和 member2 是要计算距离的两个地理位置成员的名称。
  • [unit] 是一个可选参数,表示距离的单位,可以是m(米)、km(千米)、mi(英里)、ft(英尺)。

如果没有指定单位,默认单位是米。

例如,计算"Palermo"和"Catania"之间的距离:

GEODIST locations Palermo Catania km

这个命令询问Redis从locations这个键中取出"Palermo"和"Catania"的地理位置,并计算它们之间的距离,单位为千米。

读取GEODIST命令结果

执行GEODIST命令后,得到的结果是两个位置之间的直线距离,这个数值是一个浮点数,其精度取决于你请求的单位。

例如,可能的返回值是:

"166.2742"

这意味着"Palermo"和"Catania"之间的距离大约为166.2742千米。如果你请求的单位是米,那么结果可能如下:

"166274.2"

表示两地之间的距离大约为166274.2米。

标签:Palermo,经纬度,GEODIST,Redis,locations,距离,GEOADD,两点,Catania
From: https://blog.csdn.net/My_wife_QBL/article/details/139542990

相关文章

  • 基于SpringBoot+Mybatis+Redis的问答社交网站项目(免费提供全部源码)
    下载地址如下:基于SpringBoot+Mybatis+Redis的问答社交网站项目(免费提供全部源码)资源-CSDN文库项目介绍项目背景随着互联网的普及和社交媒体的快速发展,用户对于在线交流和信息分享的需求不断增加。问答社交网站作为一种新型的社交平台,为用户提供了一个交流知识、解决问题和......
  • 【Redis】Redis主从复制(一)————主从搭建
    目录背景主从复制主从复制的工作流程主从复制的优点配置redis主从结构复制配置文件,修改配置主从结构启动redis服务备注查看复制状态背景单节点服务器的问题问题:可用性:如果这个机器挂了,意味着服务就中断了.性能:支持的并发量也是比较有限的.解决思路:引入分布......
  • 头歌初识redis答案
    头歌初识Redis的答案可以从多个方面进行归纳和总结。以下是根据参考文章提供的信息,按照清晰、分点表示和归纳的方式给出的答案:一、Redis基础知识Redis有16个数据库,默认使用第0个数据库,可以用select命令进行切换。Redis是基于内存操作的,其性能瓶颈不是CPU,而是机器的内存和......
  • Redis实战——创建账户及连接数据库
    一、创建一个新账户要创建一个带有免费数据库的新账户,请按照以下步骤操作:前往RedisCloud的注册页面。有两种开始使用RedisCloud的选项:在表单中输入您的信息,然后选择“GetStarted”(开始使用)。使用Google或Github账户进行注册。  3.在您输入信息后,您应该会收......
  • Java (Redis)
    前沿让我们来学习下Redis吧 官网下载客户端https://app.redislabs.com/#/rlec-downloads  什么是Redis?Redis(RemoteDictionaryServer)是一个开源的、高性能的、基于内存的键值存储系统。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。由于其基于......
  • 福州大学苏立超老师《大数据库系统》第三章复习提纲“redis”
    第三章(考点:3.3-3.7数据类型与操作(会写会熟练使用)消息订阅持久化主从复制运维和哨兵怎么配,作用)一.通用命令设置setkeyvalue查询keyskey(*)支持模糊查询*任意多个字符;[]括号内某个字符;?单个字符randomkey随机keyexistskey判断是否存在typekey返回类型delke......
  • Redis-12-SpringBoot集成Redis哨兵模式
    Redis哨兵的配置,参考我这篇文章:Redis-5-高可用1.背景网上搜半天没搜到份好用的,自己整理了下方便以后复制,基于springboot2.6.13。lettucecommons-pool22.集成2.1导入pom<!--spring-redis--><dependency><groupId>org.springframewor......
  • 使用Redis优化Java应用的性能——高效的缓存实践
    引言:在现代应用开发中,高效的缓存策略是提升性能和用户体验的关键。Redis作为一个高性能的键值存储系统,提供了一种快速存取数据的方式,帮助Java应用处理大量动态信息而无需频繁查询数据库。什么是Redis?Redis是一个开源的键值存储系统,它支持多种类型的数据结构如字符串、哈希、......
  • Docker 下载redis
    docker拉取redis镜像dockerpullredis:对应的版本号(不写默认为最新版) 查看镜像是否拉取成功dockerimages 创建redis配置文件启动前需要先创建reids的外部挂载的配置文件(/opt/docker/redis/conf/redis.conf)(因为redis本身容器只存在/etc/redis目录,本身就不创建redis......
  • 高并发下使用Redis分布式锁确保接口执行唯一性【重点】
    摘要:本文将介绍如何使用Redis分布式锁来确保在高并发环境下,确保某个接口只有一个线程能够执行。通过使用Redis的SETNX命令,我们可以实现一个简单的分布式锁,从而避免多个线程同时访问共享资源。一、背景在高并发的系统中,为了保证数据的一致性和完整性,我们经常需要对某些接口......