树叶云Redis教程:Redis GEO

Redis GEO

Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。

Redis GEO 操作方法有:

  • geoadd:添加地理位置的坐标。
  • geopos:获取地理位置的坐标。
  • geodist:计算两个位置之间的距离。
  • georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
  • georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。
  • geohash:返回一个或多个位置对象的 geohash 值。

geoadd

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

geoadd 语法格式如下:

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

以下实例中 key 为 Sicily,Palermo 和 Catania 为位置名称 :

实例

redis
> GEOADD Sicily
13.361389
38.115556
“Palermo”
15.087269
37.502669
“Catania”

(integer
)
2

redis
> GEODIST Sicily Palermo Catania

“166274.1516”

redis
> GEORADIUS Sicily
15
37
100 km

1
)
“Catania”

redis
> GEORADIUS Sicily
15
37
200 km

1
)
“Palermo”

2
)
“Catania”

redis
>

geopos

geopos 用于从给定的 key 里返回所有指定名称(member)的位置(经度和纬度),不存在的返回 nil。

geopos 语法格式如下:

GEOPOS key member [member ...]

实例

redis
> GEOADD Sicily
13.361389
38.115556
“Palermo”
15.087269
37.502669
“Catania”

(integer
)
2

redis
> GEOPOS Sicily Palermo Catania NonExisting

1
)
1
)
“13.36138933897018433”

   
2
)
“38.11555639549629859”

2
)
1
)
“15.08726745843887329”

   
2
)
“37.50266842333162032”

3
)
(nil
)

redis
>

geodist

geodist 用于返回两个给定位置之间的距离。

geodist 语法格式如下:

GEODIST key member1 member2 [m|km|ft|mi]

member1 member2 为两个地理位置。

最后一个距离单位参数说明:

  • m :米,默认单位。
  • km :千米。
  • mi :英里。
  • ft :英尺。
  • > 计算 Palermo 与 Catania 之间的距离:

    实例

    redis
    > GEOADD Sicily
    13.361389
    38.115556
    “Palermo”
    15.087269
    37.502669
    “Catania”

    (integer
    )
    2

    redis
    > GEODIST Sicily Palermo Catania

    “166274.1516”

    redis
    > GEODIST Sicily Palermo Catania km

    “166.2742”

    redis
    > GEODIST Sicily Palermo Catania mi

    “103.3182”

    redis
    > GEODIST Sicily Foo Bar

    (nil
    )

    redis
    >

    georadius、georadiusbymember

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

    georadiusbymember 和 GEORADIUS 命令一样, 都可以找出位于指定范围内的元素, 但是 georadiusbymember 的中心点是由给定的位置元素决定的, 而不是使用经度和纬度来决定中心点。

    georadius 与 georadiusbymember 语法格式如下:

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

    参数说明:

    • m :米,默认单位。
    • km :千米。
    • mi :英里。
    • ft :英尺。
    • WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。
    • WITHCOORD: 将位置元素的经度和纬度也一并返回。
    • WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
    • COUNT 限定返回的记录数。
    • ASC: 查找结果根据距离从近到远排序。
    • DESC: 查找结果根据从远到近排序。

    georadius 实例:

    实例

    redis
    > GEOADD Sicily
    13.361389
    38.115556
    “Palermo”
    15.087269
    37.502669
    “Catania”

    (integer
    )
    2

    redis
    > GEORADIUS Sicily
    15
    37
    200 km WITHDIST

    1
    )
    1
    )
    “Palermo”

       
    2
    )
    “190.4424”

    2
    )
    1
    )
    “Catania”

       
    2
    )
    “56.4413”

    redis
    > GEORADIUS Sicily
    15
    37
    200 km WITHCOORD

    1
    )
    1
    )
    “Palermo”

       
    2
    )
    1
    )
    “13.36138933897018433”

         
    2
    )
    “38.11555639549629859”

    2
    )
    1
    )
    “Catania”

       
    2
    )
    1
    )
    “15.08726745843887329”

         
    2
    )
    “37.50266842333162032”

    redis
    > GEORADIUS Sicily
    15
    37
    200 km WITHDIST WITHCOORD

    1
    )
    1
    )
    “Palermo”

       
    2
    )
    “190.4424”

       
    3
    )
    1
    )
    “13.36138933897018433”

         
    2
    )
    “38.11555639549629859”

    2
    )
    1
    )
    “Catania”

       
    2
    )
    “56.4413”

       
    3
    )
    1
    )
    “15.08726745843887329”

         
    2
    )
    “37.50266842333162032”

    redis
    >

    georadiusbymember 实例:

    实例

    redis
    > GEOADD Sicily
    13.583333
    37.316667
    “Agrigento”

    (integer
    )
    1

    redis
    > GEOADD Sicily
    13.361389
    38.115556
    “Palermo”
    15.087269
    37.502669
    “Catania”

    (integer
    )
    2

    redis
    > GEORADIUSBYMEMBER Sicily Agrigento
    100 km

    1
    )
    “Agrigento”

    2
    )
    “Palermo”

    redis
    >

    geohash

    Redis GEO 使用 geohash 来保存地理位置的坐标。

    geohash 用于获取一个或多个位置元素的 geohash 值。

    geohash 语法格式如下:

    GEOHASH key member [member ...]

    实例:

    实例

    redis
    > GEOADD Sicily
    13.361389
    38.115556
    “Palermo”
    15.087269
    37.502669
    “Catania”

    (integer
    )
    2

    redis
    > GEOHASH Sicily Palermo Catania

    1
    )
    “sqc8b49rny0”

    2
    )
    “sqdtr74hyu0”

    redis
    >

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/231607.html<

(0)
管理的头像管理
上一篇2025-04-19 18:57
下一篇 2025-04-19 18:59

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注