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
Redis持久化与主从复制的实践
Apr 27 Redis
基于Redis实现分布式锁的方法(lua脚本版)
May 12 Redis
redis内存空间效率问题的深入探究
May 17 Redis
详解缓存穿透击穿雪崩解决方案
May 28 Redis
CentOS8.4安装Redis6.2.6的详细过程
Nov 20 Redis
linux下安装redis图文详细步骤
Dec 04 Redis
聊聊redis-dump工具安装问题
Jan 18 Redis
redis调用二维码时的不断刷新排查分析
Apr 01 Redis
一文搞懂Redis中String数据类型
Apr 03 Redis
Redis 异步机制
May 15 Redis
python中使用redis用法详解
Dec 24 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
PHP6 mysql连接方式说明
2009/02/09 PHP
PHP5权威编程阅读学习笔记 附电子书下载
2012/07/05 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
使用laravel根据用户类型来显示或隐藏字段
2019/10/17 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
2020/08/17 PHP
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
javascript中expression的用法整理
2014/05/13 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
2015/02/20 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
前端JS面试中常见的算法问题总结
2016/12/23 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
2016/12/26 Javascript
基于JavaScript实现本地图片预览
2017/02/08 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
React实践之Tree组件的使用方法
2017/09/30 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
2018/03/10 Javascript
详解JSON Web Token 入门教程
2018/07/30 Javascript
jquery插件懒加载的示例
2020/10/24 jQuery
[48:26]VGJ.S vs infamous Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
简单介绍Python中的JSON模块
2015/04/08 Python
深入理解Python中的*重复运算符
2017/10/28 Python
基于python 处理中文路径的终极解决方法
2018/04/12 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
使用Python生成200个激活码的实现方法
2019/11/22 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
基于Keras的格式化输出Loss实现方式
2020/06/17 Python
美国知名眼镜网站:Target Optical
2020/04/04 全球购物
Java文件和目录(IO)操作
2014/08/26 面试题
会计应聘求职信范文
2013/12/17 职场文书
不假外出检讨书
2014/01/27 职场文书
多媒体专业自我鉴定
2014/02/28 职场文书
保护环境倡议书范文
2014/05/13 职场文书
如何书写邀请函?
2019/06/24 职场文书
nginx作grpc的反向代理踩坑总结
2021/07/07 Servers