前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis地理信息定位GEO

Redis地理信息定位GEO

作者头像
吉林乌拉
发布2019-10-24 22:47:54
1.1K0
发布2019-10-24 22:47:54
举报
文章被收录于专栏:吉林乌拉吉林乌拉

Redis提供了GEO功能,也就是地理信息定位功能。通过Redis中的GEO功能,我们可以很方便的通过经纬度来计算两个地理位置之间的距离。所以我们在实际的开发中,可以使用Redis中的GEO功能,来实现和附近位置有关的功能。下面我们详细介绍Redis中的GEO功能的相关命令。

命令

增加地理信息

代码语言:javascript
复制
geoadd key longitude latitude member [longitude latitude member ...]

geoadd命令执行的时候,是需要添加经纬度的,并且geoadd命令执行成功后返回值会等于添加元素的个数,如果添加的元素已经存在了,则返回值为0。除此之外geoadd命令支持批量添加元素。

  • 获取地理位置信息
代码语言:javascript
复制
geopos key member [member ...]
  • 获取两个地理位置的距离
代码语言:javascript
复制
geodist key member1 member2 [unit]

geodist命令中的unit参数指的是距离的单位。它们主要有4种选项:

  • m:表示的单位是米。
  • km:表示的单位是千米。
  • mi:表示的单位是英里。
  • ft:表示的单位是尺。

获取指定位置范围内的地理信息位置集合

代码语言:javascript
复制
georadius key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]

georadius命令的参数比较多,下面我们详细介绍一下该命令的参数。

  • withcoord:返回的结果中包括经纬度。
  • withdist:返回的结果中包含离中心节点位置的距离。
  • withhash:返回的结果中包含geohash。
  • count:返回结果的数量。
  • asc|desc:返回结果离中心节点距离的升序或降序。
  • store key:将返回结果的地理位置信息保存到指定的键中。
  • storedist key:将返回结果离中心节点的距离保存到指定键中。

除了使用georadius命令外,我们还可以使用georadiusbymember命令,该命令和georadius命令的区别是前者在获取位置集合中需要指定的中心节点是元素名字,而后者则需要输入中心节点的经纬度,除此之外,这两个命令没有其它区别。

  • 获取geohash
代码语言:javascript
复制
geohash key member [member ...]

在Redis中我们可以通过geohash将经纬度转换成字符串。

在Redis中GEO信息会保存到zset类型中。

下面我们看一下geohash的特点:

  • 字符串越长,表示的位置更精确。
  • 字符串越相近,表示它们之间的距离越近。

下面为geohash长度与精度的对应关系。

删除地理位置信息

代码语言:javascript
复制
zrem key member [member ...]

Redis中并没有提供删除元素的命令,但我们知道Redis将地理位置信息保存到了zset中,所以我们可以直接使用zset中的命令删除指定元素,也就是zrem命令。

上述内容就是Redis中的GEO功能,如有不正确的地方,欢迎留言,谢谢。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 吉林乌拉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 命令
    • 增加地理信息
    相关产品与服务
    云数据库 Redis
    腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档