千家信息网

Redis新特性GEOHASH

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,一、简言Redis 的 GEO 特性将在 Redis 3.2 版本释出, 这个功能可以将用户给定的地理位置信息储存起来, 并对这些信息进行操作将指定的地理空间项目(纬度,经度,名称)添加到指定的键。数
千家信息网最后更新 2026年11月02日Redis新特性GEOHASH

一、简言

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"


位置 地理 地理位置 命令 坐标 参数 范围 格式 排序 信息 单位 字符 字符串 经纬 经纬度 结果 纬度 经度 查询 区域 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会 西安纸贵互联网科技有限公司 互联网科技公司的优势 西安互联网科技 小马过河互联网科技 狮子座互联网科技有限公司 科技互联网的估值 广州慧亚互联网科技怎么样 互联网时代科技改变生活 赶超互联网科技 微信多开 恒生互联网科技指数跳水 浙南科技城互联网大厦建设工程 工业互联网展湾科技股份有限公司 美国互联网科技实力 皮皮虾互联网科技有限公司 易企秀互联网科技是做什么的 济南小医互联网科技有限公司招聘 10位科技互联网大佬 现代科技的标志之一的互联网 互联网科技企业文化 互联网科技开发公司 科技服务与互联网 亿账通互联网科技 互联网之后的科技是什么 互联网还是高科技吗 坤平互联网科技 互联网行业科技股 南京一网一红互联网科技有限公司 宁波允成互联网科技有限公司 互联网科技企业文化
0