Redis的3大特殊数据结构(3)-Geospatial

news2024/9/27 9:27:43

Geospatial地理空间,Redis 在 3.2 版本中加入了地理空间(geospatial)以及索引半径查询的功能,主要用在需要地理位置的应用上。将指定的地理空间位置(经度、纬度、名称)添加到指定的 key 中,这些数据将会存储到 sorted set
经度:longitude,有效返围[-180,180],正的表示东经,负的表示西经
纬度:latitude,有效返围[-85.05112878,85.05112878],正的表示北纬,负的表示南纬
地点经纬度查询添加链接描述

1.geoadd key longitude latitude member [longitude latitude member …]

将指定的地理空间位置(经度、纬度、名称)添加到指定的 key 中

127.0.0.1:6379> geoadd city 116.405285 39.904989 beijing
(integer) 1
127.0.0.1:6379> geoadd city 121.472644 31.231706 shanghai
(integer) 1
127.0.0.1:6379> geoadd city 113.280637 23.125178 guangzhou
(integer) 1
127.0.0.1:6379> geoadd city 114.085947 22.547 shenzhen
(integer) 1

在这里插入图片描述

2.geopos key member [member …]

geopos 获取指定城市的地理位置经纬度,可以从 key 里返回所有给定地理位置的经纬度

127.0.0.1:6379> geopos city beijing
1) 1) "116.40528291463851929"
   2) "39.9049884229125027"
127.0.0.1:6379> geopos city shanghai guangzhou
1) 1) "121.47264629602432251"
   2) "31.23170490709807012"
2) 1) "113.28063815832138062"
   2) "23.12517743834835215"

在这里插入图片描述

3.geodist key member1 member2 [m | km | ft | mi]

获取两个目的地之间的距离

  1. m 表示单位为米(默认)
  2. km 表示单位为千米
  3. mi 表示单位为英里
  4. ft 表示单位为英尺
 127.0.0.1:6379> geodist city beijing shanghai km
"1067.5980"
127.0.0.1:6379> geodist city beijing shanghai
"1067597.9668"

在这里插入图片描述

4.georadius key lopngitude latitude radius [m | km | ft | mi] [WITHCOORD] [WITHDIST] [COUNT count] [ASC|DESC] […]

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

127.0.0.1:6379> geodist city beijing shenzhen  km     #北京到深圳距离
"1943.0240"
127.0.0.1:6379> geodist city beijing guangzhou km     #北京到广州距离
"1889.3706"
127.0.0.1:6379> geodist city beijing shanghai km      #北京到上海距离
"1067.5980"
127.0.0.1:6379> georadius key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [ST                      127.0.0.1:6379> georadius key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [ST                      127.0.0.1:6379> georadius city 116.405285 39.904989 1890km
(error) ERR wrong number of arguments for 'georadius' command
127.0.0.1:6379> georadius city 116.405285 39.904989 1890 km  #(116.405285,39.904989)距离1890km以内的地方
1) "guangzhou"
2) "shanghai"
3) "beijing"
127.0.0.1:6379> georadius city 116.405285 39.904989 1890 km WITHCOORD   #(116.405285,39.904989)距离1890km以内的地方带经纬度
1) 1) "guangzhou"
   2) 1) "113.28063815832138062"
      2) "23.12517743834835215"
2) 1) "shanghai"
   2) 1) "121.47264629602432251"
      2) "31.23170490709807012"
3) 1) "beijing"
   2) 1) "116.40528291463851929"
      2) "39.9049884229125027"
127.0.0.1:6379> georadius city 116.405285 39.904989 1890 km
1) "guangzhou"
2) "shanghai"
3) "beijing"
127.0.0.1:6379> georadius city 116.405285 39.904989 1890 km withdist  #(116.405285,39.904989)距离1890km以内的地方带距离
1) 1) "guangzhou"
   2) "1889.3707"
2) 1) "shanghai"
   2) "1067.5979"
3) 1) "beijing"
   2) "0.0002"
127.0.0.1:6379> georadius city 116.405285 39.904989 1890 km withcoord withdist count 2  #(116.405285,39.904989)距离1890km以内的地方只显示2个
1) 1) "beijing"
   2) "0.0002"
   3) 1) "116.40528291463851929"
      2) "39.9049884229125027"
2) 1) "shanghai"
   2) "1067.5979"
   3) 1) "121.47264629602432251"
      2) "31.23170490709807012"
127.0.0.1:6379> georadius city 116.405285 39.904989 1890 km withcoord withdist count 3
1) 1) "beijing"
   2) "0.0002"
   3) 1) "116.40528291463851929"
      2) "39.9049884229125027"
2) 1) "shanghai"
   2) "1067.5979"
   3) 1) "121.47264629602432251"
      2) "31.23170490709807012"
3) 1) "guangzhou"
   2) "1889.3707"
   3) 1) "113.28063815832138062"
      2) "23.12517743834835215"
127.0.0.1:6379> georadius city 116.405285 39.904989 1890 km withcoord withdist count 3 asc
1) 1) "beijing"
   2) "0.0002"
   3) 1) "116.40528291463851929"
      2) "39.9049884229125027"
2) 1) "shanghai"
   2) "1067.5979"
   3) 1) "121.47264629602432251"
      2) "31.23170490709807012"
3) 1) "guangzhou"
   2) "1889.3707"
   3) 1) "113.28063815832138062"
      2) "23.12517743834835215"
127.0.0.1:6379> georadius city 116.405285 39.904989 1890 km withcoord withdist count 1
1) 1) "beijing"
   2) "0.0002"
   3) 1) "116.40528291463851929"
      2) "39.9049884229125027"

在这里插入图片描述
在这里插入图片描述

5.georadiusbymember key member radius [m | km | ft | mi] [WITHCOORD] [WITHDIST] [COUNT count] [ASC|DESC] […]

返回给定元素位置给定距离范围以内的元素

127.0.0.1:6379> georadiusbymember  city beijing 2000 km withcoord  #返回距离北京2000km以内的地方带经纬度
1) 1) "shenzhen"
   2) 1) "114.08594459295272827"
      2) "22.54699993773966327"
2) 1) "guangzhou"
   2) 1) "113.28063815832138062"
      2) "23.12517743834835215"
3) 1) "shanghai"
   2) 1) "121.47264629602432251"
      2) "31.23170490709807012"
4) 1) "beijing"
   2) 1) "116.40528291463851929"
      2) "39.9049884229125027"
127.0.0.1:6379> georadiusbymember  city beijing 2000 km withdist  #返回距离北京2000km以内的地方带距离
1) 1) "shenzhen"
   2) "1943.0240"
2) 1) "guangzhou"
   2) "1889.3706"
3) 1) "shanghai"
   2) "1067.5980"
4) 1) "beijing"
   2) "0.0000"

在这里插入图片描述

6.geohash key member [member …]

获取给定元素hash计算结果

127.0.0.1:6379> geohash city beijing
1) "wx4g0b7xrt0"
127.0.0.1:6379> geohash city beijing shanghai
1) "wx4g0b7xrt0"
2) "wtw3sjt9vg0"

在这里插入图片描述

7.总结

常用于推算地理位置的信息,两地之间的距离,朋友定位,附近的人,打车距离计算…

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

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

相关文章

JS逆向入门教程p1 浏览器设置 常用工具

1.准备工作 http 编程语言(网络apidavaScript) 逆向(js逆向 安卓逆向 ios逆向 PC逆向)调试 图像识别 下载城南Post助手、fiddler、wireshark(鲨鱼)抓包工具; 通过进程抓包 fiddler插件: f12配置推荐,实验功能全部关闭 时间线上的分配检测:js的运行时间线 关闭时间…

【软考网络管理员】2023年软考网管初级常见知识考点(21)-安装及配置DHCP服务器(图文结合)

涉及知识点 安装DHCP服务器,配置DHCP服务器,如何去安装DHCP服务器,如何去配置DHCP服务器,软考网络管理员常考知识点,软考网络管理员网络安全,网络管理员考点汇总。 原创于:CSDN博主-《拄杖盲学…

项目进度计划表的制作方法解析:简单易懂的步骤指南

项目进度计划表怎么做?创建项目进度表是项目管理的一个重要组成部分,它有助于确保项目的成功完成。它是一个详细的计划,概述了实现项目目标所需的工作范围、时间线、里程碑和资源。本文将讨论制定项目进度表所涉及的步骤。 1、定义项目范围: …

掌握Gradio的Audio模块:实时交互与多功能展示

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

C语言学习(二十七)---指针练习题(三)

在上一节的内容中,我们继续学习了字符数组的相关指针练习题,今天我们将继续将练习有关二维数组的指针练习题和有关结构体的指针练习题,好了,话不多说,开整!!!! 二维数组…

从零开始学习:如何使用Selenium和Python进行自动化测试?

安装selenium 打开命令控制符输入:pip install -U selenium 火狐浏览器安装firebug:www.firebug.com,调试所有网站语言,调试功能 Selenium IDE 是嵌入到Firefox 浏览器中的一个插件,实现简单的浏览器操 作的录制与回…

开源社 KCC@硅谷正式成立,搭建国际开源交流平台

大家好!我很高兴向大家宣布一个重要的消息: 开源社在硅谷的KCC(Kaiyuanshe City Community)正式成立了!作为开源社的一项重要举措,KCC硅谷将成为国际开源交流的桥梁,架起中国和全球开源社区之间…

第十八章、Spring中的事务属性:隔离、传播属性等

1.什么是事务属性 属性:描述物体特征的一系列值 事务属性;描述事务特征的一系列值 1. 隔离属性 2. 传播属性 3. 只读属性 4. 超时属性 5. 异常属性2.如何添加事务属性 Transactional(isloation,propagation,readOnly,timeout,rollbackFor,norollbackFo…

three.js中物体的灯光与阴影设置

一、.设置物体阴影的核心步骤 1. 以平面上有一个球体为例,设置球体的阴影投射到平面上,核心步骤如下: 要让球体的阴影照射到平面上,需要使用阴影映射技术。具体步骤如下: 在渲染器中启用阴影: renderer…

高速下载ChatGLM2模型文件的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

无法使用MBR2GPT创建EFI系统分区?试试这方法!

将MBR转换为GPT的原因 你可能已经了解了GPT和MBR这两种不同类型的磁盘。由于硬盘容量一直在不断增加,人们现在更偏向于使用GPT磁盘。相较于MBR磁盘,GPT磁盘支持更大的存储空间,其限制超过了2TB。另外,GPT磁盘允许几乎无限数量…

【网络编程】网络基础(一)

文章目录 一、计算机网络背景1.网络发展2.认识 "协议" 二、网络协议初识1.协议分层2.OSI七层模型3.TCP/IP五层(或四层)模型 三、网络传输基本流程1.网络传输流程图2.数据包首部(报头)3.数据包封装和分用封装分用 4. 跨局域网主机通信 四、网络…

【C站话题】如何看待调查称半数年轻人存款不足10万?

*近日,有调查称“大概五分之一的年轻人存款在一万元以内。10万元存款是一个“坎”,存款超过10万就会超过53.7%的人。”“年轻人”“存款”两个词碰撞在一起,引来了广泛的关注和讨论。你认为年轻人存款难吗?可以从以下几个角度发表…

多模态大语言模型 LlaVA 论文解读:Visual Instruction Tuning

代码:https://github.com/haotian-liu/LLaVA 总览 在这篇论文中,作者首次尝试使用纯语言 GPT-4 生成多模态语言图像指令遵循数据(insruction-following data)。 通过对此类生成数据进行指令调整,推出了大型语言和视觉…

RocketMQ --- 实战篇

一、案例介绍 1.1、业务分析 模拟电商网站购物场景中的【下单】和【支付】业务 1.1.1、下单 流程 用户请求订单系统下单 订单系统通过RPC调用订单服务下单 订单服务调用优惠券服务,扣减优惠券 订单服务调用调用库存服务,校验并扣减库存 订单服务调…

MiniGPT4模型训练与部署

第二式:MiniGPT4模型训练与部署 1.环境搭建1.1 下载MiniGPT-4代码1.2 创建虚拟环境 2.Vicuna模型准备2.1 下载vicuna delta weights2.2 下载原始llama weights2.3 合成真正的working weights2.4 配置Vicuna模型路径 3. MiniGPT-4 checkpoint准备3.1 下载MiniGPT-4 c…

《二叉搜索树》

文章目录 一、二叉搜索树的概念二、二叉搜索树的实现2.1 插入迭代插入递归插入 2.2 查找迭代查找递归查找 2.3 删除迭代删除递归删除 2.4 中序遍历 三、二叉搜索树的应用1、K模型2、KV模型 四、二叉树的性能分析 一、二叉搜索树的概念 二叉搜索树又叫做二叉排序树。 左子树的…

diffusion model(三)—— classifier guided diffusion model

classifier guided diffusion model 背景 对于一般的DM(如DDPM, DDIM)的采样过程是直接从一个噪声分布,通过不断采样来生成图片。但这个方法生成的图片类别是随机的,如何生成特定类别的图片呢?这就是clas…

前沿重器[35] | 提示工程和提示构造技巧

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。(算起来,专项启动已经…

MySQL数据库主从复制与读写分离(图文详解!)

目录 前言 一:MySQL数据库主从复制与读写分离 1、什么是读写分离? 2、为什么要读写分离呢? 3、什么时候要读写分离? 4、主从复制与读写分离 5、mysql支持的复制类型 (1)STATEMENT (2&…