【Redis】特殊数据类型 Geo (地理位置)

这篇具有很好参考价值的文章主要介绍了【Redis】特殊数据类型 Geo (地理位置)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Redis】特殊数据类型 Geo (地理位置),Redis,redis,缓存,服务器,数据库

🎯前言

除了五中基本的数据类型外,Redis还支持两种特殊的数据类型,第一种 Geo (地理位置):用于存储地理位置相关的数据,例如经纬度、距离等。第二种 Stream (流):是一个高级的列表类型,支持对列表的批量操作,如添加多个元素、获取多个元素等。

Redis GEO(Geo Redis)是一个用于存储和操作地理空间数据的 Redis 模块。它提供了一组命令,可以将地理位置数据存储为 Redis 键值,并支持各种地理位置查询和操作。

Redis GEO 可以在需要处理地理位置数据的场景中使用,例如近邻查询、地理位置路由、基于地理位置的服务等。使用 Redis GEO 可以高效地处理大量的地理位置数据,并且可以与其他 Redis 数据类型(例如列表、哈希表)结合使用,以提供更复杂的地理位置服务。

🎯Geo (地理位置 关命令介绍)

Redis GEO 的常用命令:

  1. GEODEL:删除给定位置上的元素。
  2. GEOADD:向给定位置添加元素。
  3. GEOPOS:获取给定元素的经纬度。
  4. GEORADIUS:半径为 radius 的圆中第一个元素。
  5. GEORADIUSBYMEMBER:在距离给定元素 radius 距离的圆中查找元素。
  6. GEOHASH:获取给定元素的哈希值。 
  7. GEODIST:获取两个元素之间的距离。

🎯Geo (地理位置 相关命令操作)

GEOADD (添加地理位置的坐标)

说明:

geoadd 用于存储指定的地理空间位置,可以将一个或多个经度(longitude)、纬度(latitude)、位置名称(member)添加到指定的 key 中

语法:

GEOADD key longitude latitude member [longitude latitude member ...]
  1. key:要添加点的键值。
  2. longitude:要添加点的经度。
  3. latitude:要添加点的纬度。
  4. member:要添加点的成员属性,可以根据需要进行设置。

示例:

127.0.0.1:6379> GEOADD city 116.403039  39.915351 "beijing" 117.220164  39.095583 "tianjin"
(integer) 2
127.0.0.1:6379> GEODIST city beijing tianjin
"115025.3461"
127.0.0.1:6379> GEORADIUS city 116 39 1000 km
1) "tianjin"
2) "beijing"
127.0.0.1:6379> GEORADIUS city 116 39 200 km
1) "tianjin"
2) "beijing"
127.0.0.1:6379> GEORADIUS city 116 39 120 km
1) "tianjin"
2) "beijing"
127.0.0.1:6379>  GEORADIUS city 116 39 100 km
(empty list or set)
127.0.0.1:6379>

该命令(GEOADD city 116.403039  39.915351 "beijing" 117.220164  39.095583 "tianjin")将beijing和tianjin这两个点添加到city 这个键值下,每个点都由它们的经纬度坐标和成员属性"beijing"和"tianjin"组成。


GEOPOS (获取地理位置的坐标)

说明:

GEOPOS命令用于获取一个或多个点的经纬度坐标。

语法:

GEOPOS key member [member ...]
  1. key:要获取点的键值。
  2. member:要获取点的成员属性,可以根据需要进行设置。

示例:

127.0.0.1:6379> GEOPOS city beijing tianjin nonexistent
1) 1) "116.40304058790206909"
   2) "39.91535036301187489"
2) 1) "117.22016483545303345"
   2) "39.09558351926427378"
3) (nil)
127.0.0.1:6379>

 该命令将返回beijing 和 tianjin这两个点的经纬度坐标。


GEODIST (计算两个位置之间的距离)

说明:

GEODIST命令用于计算两个给定位置之间的距离,以双精度浮点数的形式返回。

语法:

GEODIST key member1 member2 [unit]
  1. key:可以是一个键值,但该参数不是必需的。
  2. member1:要计算距离的位置1的成员属性。
  3. member2:要计算距离的位置2的成员属性。
  4. unit:可以指定返回的距离单位,可以是m(米)、km(千米)、mi(英里)或ft(英尺)。

示例:

127.0.0.1:6379> GEODIST city beijing tianjin
"115025.3461"
127.0.0.1:6379> GEODIST city beijing tianjin m
"115025.3461"
127.0.0.1:6379> GEODIST city beijing tianjin km
"115.0253"
127.0.0.1:6379> GEODIST city beijing tianjin mi
"71.4736"
127.0.0.1:6379> GEODIST city beijing tianjin ft
"377379.7446"
127.0.0.1:6379>

 该命令将返回beijing 和 tianjin这两个点之间的距离,默认单位为米。


GEOHASH (返回一个或多个位置对象的 geohash 值)

说明:

Redis GEO 使用 GEOHASH 来保存地理位置的坐标。GEOHASH  用于获取一个或多个位置元素的 GEOHASH 值。

语法:

GEOHASH key member [member ...]
  1. key:可以是一个键值,但该参数不是必需的。
  2. member1:要计算距离的位置1的成员属性。
  3. member2:要计算距离的位置2的成员属性。

示例:

127.0.0.1:6379> GEOHASH city beijing tianjin
1) "wx4g0f65g20"
2) "wwgq7mjh7b0"
127.0.0.1:6379>

该命令将返回北京和天津这两个点之间的距离。请注意,您需要提供正确的地理位置信息才能正确使用此命令。


GEORADIUS (根据用户给定的经纬度坐标来获取指定范围内的地理位置集合)

说明:

根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。

语法:

GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC
  1. key:要查找的点的键值。
  2. longitude:要查找的点的经度。
  3. latitude:要查找的点的纬度。
  4. radius:可以设置半径的大小,后面需要指定单位,如m、km、ft或mi。
  5. [WITHCOORD]:如果需要,可以使用WITHCOORD选项来返回包含距离计算的点的经纬度坐标。
  6. [WITHDIST]:如果需要,可以使用WITHDIST选项来返回包含距离计算的点的距离。
  7. [WITHHASH]:如果需要,可以使用WITHHASH选项来返回包含距离计算的点的哈希值。
  8. [COUNT count]:如果需要,可以使用COUNT count选项来指定返回的距离计算的点的数量。
  9. [ASC]:如果需要,可以使用ASC选项来指定按距离升序排列返回的距离计算的点。

示例:

127.0.0.1:6379> GEOADD city 116.403039  39.915351 "beijing" 117.220164  39.095583 "tianjin"
(integer) 2
127.0.0.1:6379> GEORADIUS city 117 39 200 km WITHDIST
1) 1) "tianjin"
   2) "21.7878"
2) 1) "beijing"
   2) "113.9887"
127.0.0.1:6379> GEORADIUS city 117 39 200 km WITHCOORD
1) 1) "tianjin"
   2) 1) "117.22016483545303345"
      2) "39.09558351926427378"
2) 1) "beijing"
   2) 1) "116.40304058790206909"
      2) "39.91535036301187489"
127.0.0.1:6379> GEORADIUS city 117 39 200 km WITHDIST WITHCOORD
1) 1) "tianjin"
   2) "21.7878"
   3) 1) "117.22016483545303345"
      2) "39.09558351926427378"
2) 1) "beijing"
   2) "113.9887"
   3) 1) "116.40304058790206909"
      2) "39.91535036301187489"


GEORADIUSBYMEMBER (在距离给定元素 radius 距离的圆中查找元素)

说明:

GEORADIUSBYMEMBER命令用于计算给定成员属性在指定半径范围内的其他点的距离和坐标。

语法:

GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DES
  1. key:要查找的点的键值。
  2. member:要查找的点的成员属性。
  3. radius:可以设置半径的大小,后面需要指定单位,如m、km、ft或mi。
  4. [WITHCOORD]:如果需要,可以使用WITHCOORD选项来返回包含距离计算的点的经纬度坐标。
  5. [WITHDIST]:如果需要,可以使用WITHDIST选项来返回包含距离计算的点的距离。
  6. [WITHHASH]:如果需要,可以使用WITHHASH选项来返回包含距离计算的点的哈希值。
  7. [COUNT count]:如果需要,可以使用COUNT count选项来指定返回的距离计算的点的数量。
  8. [ASC|DES:如果需要,可以使用ASC选项来指定按距离升序排列返回的距离计算的点,或者使用DES选项来指定按距离降序排列返回的距离计算的点。

示例:

127.0.0.1:6379> GEOADD city 116.403039  39.915351 "beijing" 117.220164  39.095583 "tianjin"
(integer) 2
127.0.0.1:6379> GEORADIUS city 116.403039 39.915351 500 km WITHDIST COUNT 10 ASC
1) 1) "beijing"
   2) "0.0002"
2) 1) "tianjin"
   2) "115.0255"

举例:如命令(GEORADIUS city 116.403039 39.915351 500 km WITHDIST COUNT 10 ASC)根据GEORADIUS命令,计算距离北京市中心(经度116.403039,纬度39.915351)200千米范围内其他点的距离,并按照距离升序排列返回最接近的10个点及其距离。

该命令将返回距离北京市中心(经度116.403039,纬度39.915351)200千米范围内的其他点,并按照距离升序排列返回最接近的10个点及其距离。文章来源地址https://www.toymoban.com/news/detail-550082.html


GEORADIUS 和 GEORADIUS 区别

  • GEORADIUS 以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。
  • GEORADIUS 和 GEORADIUS 命令一样, 都可以找出位于指定范围内的元素, 但是 GEORADIUS 的中心点是由给定的位置元素决定的, 而不是使用经度和纬度来决定中心点。

到了这里,关于【Redis】特殊数据类型 Geo (地理位置)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • R语言【paleobioDB】——pbdb_collections_geo():从PBDB获取根据地理位置信息筛选的采集号的基本信息

    Package  paleobioDB  version 0.7.0 paleobioDB 包在2020年已经停止更新,该包依赖PBDB v1 API。 可以选择在Index of /src/contrib/Archive/paleobioDB (r-project.org)下载安装包后,执行本地安装。 参数【...】 :可通过 API 调用的参数。所有可用参数详见 PBDB Data Service: Single fossil collection。 根据参数发

    2024年01月22日
    浏览(26)
  • Redis Geo:掌握地理空间数据的艺术

    欢迎来到我的博客,代码的世界里,每一行都是一个故事 在移动互联网和物联网的时代,地理位置数据无处不在。从导航和配送到社交网络和广告,地理位置信息正在重新定义我们与世界的互动方式。但是,处理和分析这些大量的地理空间数据绝非易事。这时,Redis Geo应运而

    2024年02月02日
    浏览(27)
  • 地理空间分析12——地理位置数据隐私与安全

    在数字化时代,地理位置数据成为了众多应用程序和服务不可或缺的一部分。从导航应用到社交媒体,从广告定位到城市规划,地理位置数据的应用范围广泛。然而,这些数据的收集和使用也引发了广泛的隐私和安全担忧。本文将探讨地理位置数据隐私的挑战和重要性,并介

    2024年03月19日
    浏览(41)
  • 【Redis】GEO数据类型之附近的店铺实现

    目录 一、GEO 1、概念 2、相关命令 1.GEOADD 2.GEODIST 3.GEOHASH 4.GEOPOS 5.GEORADIUS 6.GEOSEARCH 7.GEOSEARCHSTORE 二、附近的店铺 1、实现思路 2、代码实现 GEO全称Geolocation,Redis种的一种数据结构他代表地理坐标 1.GEOADD 向redis中添加一个地理空间信息,其中包含经度、维度、值(member) 2.GEODI

    2024年02月07日
    浏览(28)
  • 【控制篇 / 策略】(7.4) ❀ 01. IP地理位置数据库和地理地址对象 ❀ FortiGate 防火墙

    【简介】在很多使用环境下,我们需要对指定国家的IP地址进行允许或禁止访问操作,例如只允许访问国内IP。以前只能手动添加IP地址对象到地址组,繁杂且效率低下,Fortinet提供了基于地理位置的IP库,就可以解决这个问题。   IP地理位置数据库 FortiGuard IP地理位置数据库被

    2024年01月23日
    浏览(29)
  • Redis入门-redis的五大数据类型+三种特殊的数据类型

    Redis有 五大基本类型 : 字符串(string) 、 哈希(hash) 、 列表(list) 、 集合(set) 和 有序集合(sorted set) 。 字符串(string)是Redis最基本的类型,可以存储任意类型的数据 ,如整数、浮点数、二进制数据等。字符串类型的操作包括设置键值对、获取值、增减值等。

    2024年01月21日
    浏览(36)
  • 百度地图采集经纬度坐标数据定位的javascript实战开发(地理坐标拾取系统、地址定位点选插件、实时定位、数据导入、地理编码、位置纠偏)

    在百度地图的标注开发中,最为关键的操作就是经纬度坐标信息的拾取。在不同的应用场景,坐标的拾取方式不同。现就常见的地理坐标拾取系统、地址定位点选插件、手机端GPS实时定位、数据导入、地理编码、位置纠偏等做全面的介绍。 传送门:http://api.map.baidu.com/lbsapi/

    2024年02月01日
    浏览(27)
  • 【控制篇 / 策略】(7.4) ❀ 04. 修改IP地理位置数据库 ❀ FortiGate 防火墙

    【简介】虽然通过FortiGuard服务可以更新IP地理位置数据库,但是实际使用环境中,总会有部分IP地址不符合我们的愿景,这种情况下,可以通过修改IP地理位置数据库来达到我们的目标。   更新IP地理位置数据库 更新IP地理位置数据库是FortiGuard服务的一部分,必须是在服务期

    2024年02月02日
    浏览(29)
  • Redis三种特殊数据类型

    geospatial 地理位置 Redis 地理空间数据类型简介 Redis 地理空间索引允许您存储坐标并搜索它们。 此数据结构可用于查找给定半径或边界框内的邻近点。 基本命令 GEOADD 将位置添加到给定的地理空间索引(请注意,使用此命令,经度位于纬度之前)。 GEOSEARCH 返回具有给定半径或

    2024年02月11日
    浏览(27)
  • Redis(二)—— 五大基本数据类型和三大特殊数据类型

    1、常用命令  批量操作: redis可以定义对象  方式(一) :以JSON格式(其实就是key-value格式)保存一个对象 方式(二) : 把对象的两个属性定义成两个key 注意,如果采用第一种方式,那么无法单独取出字段哦~ 2、使用场景 数字int类型的string作为计数器,比如统计文章的

    2024年02月15日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包