树叶云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

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

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