Redis特殊数据类型Geospatial地理空间


Posted in Redis onJune 01, 2022

Redis特殊数据类型Geospatial地理空间

这是在redis 3.2版本推出的,推算地理位置的信息,两地之间的距离,周围方圆的人等等场景都可以用它实现。

一、geoadd

将指定的地理空间位置(纬度、经度、名称)添加到指定的key中。

这里可以借助网上的一些查询经纬度的工具来获取数据。

geoadd china:city 121.472644 31.231706 shanghai
geoadd china:city 120.619585 31.299379 suzhou
geoadd china:city 116.405285 39.904989 beijing
geoadd china:city 113.280637 23.125178 guangzhou 113.26197 23.10379 haizhuqu

china:city这个key里,添加了5个地方的经纬度:上海、苏州、北京、广州、广州海珠区。

Redis特殊数据类型Geospatial地理空间

二、geopos

从key里返回所有给定位置元素的位置(经度和纬度)。

geopos china:city suzhou shanghai

返回位置的坐标。

Redis特殊数据类型Geospatial地理空间

三、geodist

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

如果两个位置之间的其中一个不存在, 那么命令返回空值。

指定单位的参数 unit 必须是以下单位的其中一个:

  • m 表示单位为米(默认)。
  • km 表示单位为千米。
  • mi 表示单位为英里。
  • ft 表示单位为英尺。
geodist china:city suzhou shanghai km

Redis特殊数据类型Geospatial地理空间

四、georadius

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

georadius china:city 121.49295 31.22337 30 km

我以 上海黄浦区的坐标121.49295 31.22337为中心,寻找30km之内的城市。

Redis特殊数据类型Geospatial地理空间

再远点,100km之内,还可以找到suzhou,加上withdist显示出距离。

加上withcoord可以返回经纬度。

Redis特殊数据类型Geospatial地理空间

再加上count,只返回我指定的数量。

georadius china:city 121.49295 31.22337 100 km withdist withcoord count 1

Redis特殊数据类型Geospatial地理空间

五、georadiusbymember

这个命令和 georadius命令一样, 都可以找出位于指定范围内的元素。

但是这里不是指定中心点坐标,而是指定以哪个元素为中心点。

georadiusbymember china:city suzhou 100 km withdist

这里以元素suzhou为中心点,找周五100km内的其他元素。

Redis特殊数据类型Geospatial地理空间

六、geohash

一个或多个位置元素,用hash表示。

geohash china:city suzhou shanghai

Redis特殊数据类型Geospatial地理空间

返回11个字符的Geohash字符串,代表当前经纬度的字符串,就是换了个形式,将二维的经纬度转化成了一个一维的字符串。

如果上图结构里的2个字符串越接近,则2个位置距离也越近,这些了解即可。

geo的底层原理还是zset,我们可以使用zset命令操作geo,比如移除geo里的城市。

zrem china:city haizhuqu

Redis特殊数据类型Geospatial地理空间

更多的操作,可以自己亲自试试。

以上就是Redis特殊数据类型Geospatial地理空间的详细内容,更多关于Redis Geospatial地理空间的资料请关注三水点靠木其它相关文章!


Tags in this post...

Redis 相关文章推荐
redis配置文件中常用配置详解
Apr 14 Redis
Redis6.0搭建集群Redis-cluster的方法
May 08 Redis
基于Redis过期事件实现订单超时取消
May 08 Redis
为Java项目添加Redis缓存的方法
May 18 Redis
详解Redis复制原理
Jun 04 Redis
解析Redis Cluster原理
Jun 21 Redis
比较几种Redis集群方案
Jun 21 Redis
redis使用不当导致应用卡死bug的过程解析
Jul 01 Redis
Redis 哨兵机制及配置实现
Mar 25 Redis
Redis实现一个账号只能登录一个设备
Apr 19 Redis
Redis 限流器
May 15 Redis
利用Redis实现点赞功能的示例代码
Jun 28 Redis
Redis特殊数据类型HyperLogLog基数统计算法讲解
Jun 01 #Redis
Redis特殊数据类型bitmap位图
Jun 01 #Redis
浅谈Redis的事件驱动模型
May 30 #Redis
Redis 异步机制
Redis 报错 error:NOAUTH Authentication required
解决 redis 无法远程连接
Redis 限流器
May 15 #Redis
You might like
php max_execution_time执行时间问题
2011/07/17 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
php二维数组转成字符串示例
2014/02/17 PHP
帝国cms目录结构分享
2015/07/06 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
JS实现图片翻书效果示例代码
2013/09/09 Javascript
js浏览器本地存储store.js介绍及应用
2014/05/13 Javascript
Node.js 制作实时多人游戏框架
2015/01/08 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
Angular2从搭建环境到开发步骤详解
2016/10/17 Javascript
Jquery on绑定的事件 触发多次实例代码
2016/12/08 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
JS实现前端动态分页码代码实例
2020/06/02 Javascript
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
2018/05/25 Python
Python turtle库绘制菱形的3种方式小结
2019/11/23 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
python实现经纬度采样的示例代码
2020/12/10 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
2012/12/30 HTML / CSS
css3中flex布局宽度不生效的解决
2020/12/09 HTML / CSS
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
爱游人:Travelliker
2017/09/05 全球购物
捷克领先的户外服装及配件市场零售商:ALPINE PRO
2018/01/09 全球购物
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
行政助理的职责
2013/11/14 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书