iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Redis新特性GEOHASH
  • 488
分享到

Redis新特性GEOHASH

2024-04-02 19:04:59 488人浏览 八月长安
摘要

一、简言    Redis 的 GEO 特性将在 Redis 3.2 版本释出, 这个功能可以将用户给定的地理位置信息储存起来, 并对这些信息进行操作    

一、简言

    Redis 的 GEO 特性将在 Redis 3.2 版本释出, 这个功能可以将用户给定的地理位置信息储存起来, 并对这些信息进行操作   

    将指定的地理空间项目(纬度,经度,名称)添加到指定的键。数据作为排序集存储到密钥中,使得可以使用GEORADIUS或GEORADIUSBYMEMBER命令使用半径查询稍后检索项目。

    该命令采用标准格式x,y的参数,因此必须在纬度之前指定经度。可以索引的坐标有限制:非常靠近极点的区域不可索引。如EPSG:900913 / EPSG:3785 / OSGEO:41001规定的具体限值如下:

    有效经度为-180至180度。

    有效纬度为-85.05112878至85.05112878度。

    注意:没有GEODEL命令,可以使用ZREM来删除元素。地理索引结构只是一个排序集。

二、Redis GEO实现

    Redis GEO实现主要包含了以下两项技术:

    1、使用geohash保存地理位置的坐标。

    2、使用有序集合(zset)保存地理位置的集合。


三、GEOHASH

    geohash的思想是将二维的经纬度转换成一维的字符串,geohash有以下三个特点:

1、字符串越长,表示的范围越精确。编码长度为8时,精度在19米左右,而当编码长度为9时,精度在2米左右。

2、字符串相似的表示距离相近,利用字符串的前缀匹配,可以查询附近的地理位置。这样就实现了快速查询某个坐标附近的地理位置。

3、geohash计算的字符串,可以反向解码出原来的经纬度。


四、GEOHASH命令语法

    1、geoadd 用来增加地理位置的坐标,可以批量添加地理位置,其格式为:

        GEOADD key longitude latitude member [longitude latitude member ...]

        字段的介绍:

        key标识一个地理位置的集合。longitude latitude member标识了一个地理位置的坐标。longitude是地理位置的经度,latitude是地理位置的纬度。

        member是该地理位置的名称。GEOADD可以批量给集合添加一批地理位置

        egg:GEOADD beijing-area 39.8865577059 116.2161254883 shijingshan

    2、geopos 可以获取地理位置的坐标,可以批量获取多个地理位置的坐标,命令格式为:

        GEOPOS key member [member ...]


    3、geodist 用来获取两个地理位置的距离,命令格式为:

        单位可以指定为以下四种类型:

        m:米,距离单位默认为米,不传递该参数则单位为米。

        km:公里。

        mi:英里。

        ft:英尺。

    4、georadius 可以根据给定地理位置坐标获取指定范围内的地理位置集合。命令格式为:

         GEORADIUS key longitude latitude radius [m|km|ft|mi] [WITHCOORD] [WITHDIST] [ASC|DESC] [WITHHASH] [COUNT count]

        longitude latitude标识了地理位置的坐标,radius表示范围距离,距离单位可以为m|km|ft|mi,还有一些可选参数:

WITHCOORD:传入WITHCOORD参数,则返回结果会带上匹配位置的经纬度。

WITHDIST:传入WITHDIST参数,则返回结果会带上匹配位置与给定地理位置的距离。

ASC|DESC:默认结果是未排序的,传入ASC为从近到远排序,传入DESC为从远到近排序。

WITHHASH:传入WITHHASH参数,则返回结果会带上匹配位置的hash值。

COUNT count:传入COUNT参数,可以返回指定数量的结果。

    5、georadiusbymember  可以根据给定地理位置获取指定范围内的地理位置集合。georadius命令传递的是坐标,georadiusbymember传递的是地理位置。georadius更为灵活,

可以获取任何坐标点范围内的地理位置。但是大多数时候,只是想获取某个地理位置附近的其他地理位置,使用georadiusbymember则更为方便。

        georadiusbymember命令格式为(命令可选参数与georadius含义一样):

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


###命令示例

1、单一添加区域

GEOADD beijing-area 116.2161254883 39.8865577059 shijingshan 

批量添加区域

geoadd Beijing-areas 116.2161254883 39.8865577059 ShiJingShan 116.1611938477 39.7283134103 FangShan 116.3534545898 39.7071866568 DaXing 116.4166259766 39.9097362345 DonGChenQu

2、查看已经添加的地理信息,可以单个member或多个查询

    192.168.1.130:6379> geopos Beijing-areas ShiJingShan FangShan

    1) 1) "116.21612817049026489"

       2) "39.88655846536294547"

    2) 1) "116.16119652986526489"

       2) "39.72831328866426048"

3、GEODIST命令来实现计算两个位置之间的距离,通过已存在的KEY下的2个位置计算距离,单位的距离有m米km千米等

192.168.1.130:6379> geodist Beijing-areas ShiJingShan FangShan m

"18216.0860"

4、georadius查看当前位置的附近的所有位置 以及参数使用:[WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]

添加测试数据:

geoadd beijing 116.6638183594 39.8928799003 tongzhou

geoadd beijing 116.3534545898 39.7071866568 daxing

geoadd beijing 116.2161254883 39.8865577059 shijingshan

geoadd beijing 116.1611938477 39.7283134103 fangshan

georadius beijing 116.6875076294 39.8953822745 5000 m

       1、统计5000m范围内附近的位置取最远一个位置

        georadius beijing 116.6875076294 39.8953822745 50000 m COUNT 1 DESC ##ASC 当前位置最近的位置排序,当使用count类似limit

       2、统计5000m范围内附近的位置取最远一个位置相差的距离--withdist 当前位置相差的距离计算

          georadius beijing 116.6875076294 39.8953822745 50000 m COUNT 1 DESC withdist   

       3、统计5000m范围内附近的位置并显示的经纬度信息 ---withcoord 显示经纬度  

        georadius beijing 116.6875076294 39.8953822745 50000 m  DESC withcoord 

4、georadiusbymember 显示已添加的某个位置为中心点的距离多少范围内的信息。

    192.168.1.130:6379> georadiusbymember beijing shijingshan 5000 m

    1) "shijingshan"

    192.168.1.130:6379> georadiusbymember beijing shijingshan 50000 m

    1) "shijingshan"

    2) "tongzhou"

    3) "fangshan"

    4) "daxing" 

 


您可能感兴趣的文档:

--结束END--

本文标题: Redis新特性GEOHASH

本文链接: https://www.lsjlt.com/news/46694.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • redis 6.0版本新特性有哪些
    这篇文章主要介绍redis 6.0版本新特性有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Redis 6.0稳定版本Redis 6.0.0 稳定版本提供了很多新特性及功能改进,...
    99+
    2024-04-02
  • JDK 新特性篇:JDK 10 新特性详解
    JDK 10 是 Java 开发工具包的一个版本,其中包含了一些新的特性和改进。下面是 JDK 10 的一些新特性的详细解释:1. ...
    99+
    2023-09-14
    JDK
  • JDK 新特性篇:JDK 8 新特性详解
    Java8新特性简介 Java 8 (又称为 JDK 1.8) 是 Java 语言开发的一个主要版本。Java 8 是 Oracle 公司于 2014 年 3 月发布,可以看成是自 Java 5 以来最具革命性的版本。Java 8 为 J...
    99+
    2023-09-12
    java jvm 开发语言
  • JDK 新特性篇:JDK 9 新特性详解
    JDK 9 是 Java 平台的一次重大更新,引入了许多新的特性和改进。以下是 JDK 9 的一些主要新特性的详细解释。模块化系统(...
    99+
    2023-09-13
    JDK
  • Angular5.0.0新特性
    文章来自官网部分翻译https://blog.angular.io/version-5-0-0-of-angular-now-available-37e414935cedAngular5.0.0版本已经正式发布总结一下v5.0.0带来的新变...
    99+
    2023-05-30
    angular5.0.0 新特性 la
  • jdk8新特性
    jdk8新特性:1、Lambda表达式;2、Stream API;3、函数式接口;4、默认方法;5、方法引用;6、新的日期和时间API;7、并发增强;8、其他改进等等。JDK 8是Java开发工具包(Java Development Kit...
    99+
    2023-08-14
  • css3新特性
    强大的选择器    允许在标签中指定特定的HTML元素,而不必使用多余的类、ID、或者js脚本。    高级选择器可以避免在标签中添加大量的class、id属性,从而更加简洁和轻量,更方便于维护。半透明度效果    RGBA和HSLA不仅可...
    99+
    2023-01-31
    新特性
  • Java8(JDK1.8)新特性
    一、Java8(JDK1.8)新特性 Lamdba表达式 函数式接口 方法引用和构造引用 Stream API 接口中的默认方法和静态方法 新时间日期API OPtional 其他特性 二、java8(JDK1.8)新特性简介 速度快; 代...
    99+
    2023-09-12
    java
  • python3.7 的新特性
    转载Python 3.7增添了众多新的类,可用于数据处理、针对脚本编译和垃圾收集的优化以及更快的异步I/O。Python这种语言旨在使复杂任务变得简单,最新版本Python 3.7已正式进入测试版发布阶段。Python 3.7的最终版定于...
    99+
    2023-01-31
    新特性
  • MySQL 5.0 新特性
    Introduction 简介 MySQL 5.0 新特性教程是为需要了解5.0版本新特性的MySQL老用户而写的。简单的来说是介绍了“存储过程、触发器、视图、信息架构视图”,我打算每天一部分,来 连载这...
    99+
    2024-04-02
  • Java——JDK1.8新特性
    目录 一、Lambda 表达式 (一)Lambda 表达式语法 (二)类型推断 二、函数式接口 (一)自定义函数式接口 (二)作为参数传递Lambda 表达式 (三)Java 内置四大核心函数式接口 三、方法引用 四、Stream API ...
    99+
    2023-09-22
    java 开发语言 servlet 后端 java-consul
  • centos7新特性3
    Centos7新特性:MBR 分区的前 446 个字节存放的是系统引导程序 grub,中间 64 字节是分区表,最后 2 个字 节表示结束。系统开机都经历了什么?1、BIOS 自检,检查硬件; 2、激活 MBR,MBR 上不存在文件系统,可...
    99+
    2023-01-31
    新特性
  • Hadoop3.x新特性
    Hadoop3.x概述 Hadoop3.x中增强了很多特性,并且也改进了很多地方,是Hadoop2.x的升级(这不是废话吗)。需要注意的是,在Hadoop3.x中,不能再使用jdk1.7,而是需要升级到jdk1.8以上版本。这是因为Hado...
    99+
    2023-01-31
    新特性
  • MySQL 8.0 新增特性
    1. 数据字典 新增了事务型的数据字典,用来存储数据库对象信息 之前,字典数据是存储在元数据文件和非事务型表中的 2. 账号权限管理 添加了对 “角色” 的支持,角色会对应一套权限,角色可以被添加、删除...
    99+
    2024-04-02
  • JAVA 8 的新特性
    简介: 前段时间面了完美世界,被问到Java8的新特性,在此特地记录一下,虽然现在Java的版本可能已经很高了,但是Java8的新特性依然值得学习一下! 1. Lambda 表达式 lambda表达...
    99+
    2023-09-08
    java 开发语言
  • Java新特性:Optional类
    Java新特性:Optional类 Optional 类是 Java 8 才引入的,Optional 是个容器,它可以保存类型 T 的值,或者仅仅保存 null。Optional 提供了很多方法,这样我们就不用显式进行空值检测。Opti...
    99+
    2023-08-17
    java 开发语言 Optional
  • MongoDB 3.0新增特性
    引言 在历经版本号修改(2.8版本直接跳到3.0版本)和11个rc版本之后,MongoDB 3.0于2015年3月3日正式发布。可以毫不夸张的说,该版本的新增特性标志着MongoDB这款典型的...
    99+
    2024-04-02
  • Oracle 12c RMAN新特性
    Oracle 12c RMAN新特性 SYSBACKUP This privilege allows a user to perform backup and recovery operations e...
    99+
    2024-04-02
  • Hibernate5新特性介绍
    在hibernate5中,有了一些新的变动:   新引导 API Spatial/GIS 支持 Java 8 支持 扩展 AUTO id 生成支持 =...
    99+
    2023-05-31
    hibernate5 新特性 te
  • JDK10新特性详解
    1、局部变量var      将前端思想var关键字引入java后段,自动检测所属于类型,一种情况除外,不能为null,因为不能判断具体类型,会报异常。@Testpublic void te...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作