- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【麦子学院】Redis 3.2 GEO特性相关命令和功能详解
IT 在线教育平台———麦子学院:
【麦子学院】Redis 3.2 GEO 特性相关命令和功能详解
Redis 是一个高性能的 key-value 数据库 ,其最大优点就是,很大程度补偿了
memcached 这类 key/value 存储的不足,在部分场合可以对关系数据库起到很好的补充作
用。同时 Redis 还提供了 Java 开发 ,C/C++ ,C# ,PHP 开发 ,JavaScript ,Perl ,Object-
C ,Python 开发 ,Ruby ,Erlang 等客户端,使用起来很方便。
而今天小编要和大家聊的就是 Redis 的 GEO 特性,这个特性将在 Redis 3.2 版本释出,
可以将用户给定的地理位置信息储存起来, 并对这些信息进行操作。下面我们就来看看
Redis GEO 的相关命令及这些命令相关功能的实现。
一、添加和获取位置
要进行地理位置的操作,我们需要先通过执行 GEOADD 命令将具体的地理位置记录
起来:
GEOADD location-set longitude latitude name [longitude latitude name ...]
GEOADD 命令每次可以添加一个或多个经纬度地理位置。 其中 location-set 为储存地
理位置的集合, 而 longitude 、 latitude 和 name 则分别为地理位置的经度、纬度、名字。
下面我们来通过例子,看下具体如何通过 GEOADD 命令,记录地理位置。将清远、
广州、佛山、东莞、深圳等数个广东省的市添加到位置集合 Guangdong-cities 里面:
redis GEOADD Guangdong-cities 113.2099647 23.593675 Qingyuan
1 -- 成功添加一个位置
redis GEOADD Guangdong-cities 113.2278442 23.1255978 Guangzhou 113.106308
23.0088312 Foshan 113.7943267 22.9761989 Dongguan 114.0538788 22.5551603
Shenzhen
4 -- 成功添加四个位置
在将位置记录到位置集合之后, 我们可以使用 GEOPOS 命令, 输入位置的名字并取得位
置的具体经纬度:
GEOPOS location-set name [name ...]
比如说, 如果我们想要获取清远、广州和佛山的经纬度, 那么可以执行以下代码:
redis GEOPOS Guangdong-cities Qingyuan Guangzhou Foshan
IT 在线教育平台———麦子学院:
1) 1) 113.20996731519699 -- 清远的经度
2) 23.593675019671288 -- 清远的纬度
2) 1) 113.22784155607224 -- 广州的经度
2) 23.125598202060807 -- 广州的纬度
3) 1) 113.10631066560745 -- 佛山的经度
2) 23.008831202413539 -- 佛山的纬度
二、计算两个位置之间的距离
在拥有了地理数据之后, 我们就可以基于这些数据进行各种各样的操作。 针对地理
位置信息的其中一个最简单的操作, 就是计算两个位置之间的距离。
在 Redis 里面, 计算两个位置之间的距离可以通过 GEODIST 命令来实现:
GEODIST location-set location-x location-y [unit]
在调用这个命令时, 用户需要给定想要计算差距的地点 location-x 和 location-y ,以
及储存这两个地点的地理位置集合。
可选参数 unit 用于指定计算距离时的单位, 它的值可以是以下单位的其中一个:
m 表示单位为米。
km 表示单位为千米。
mi 表示单位为英里。
ft 表示单位为英尺。
如果用户没有指定 unit 参数, 那么 GEODIST 默认使用米为单位。
而对于上面的例子,我们如何利用代码计算出清远和广州之间的距离:
redis GEODIST Guangdong-cities Qingyuan Guangzhou
52094.433840356309 -- 两地相聚 52094 米
IT 在线教育平台
文档评论(0)