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 集群伸缩原理
May 15 Redis
详解Redis主从复制实践
May 19 Redis
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
May 21 Redis
redis实现排行榜功能
May 24 Redis
使用Redis实现实时排行榜功能
Jul 02 Redis
Redis集群的关闭与重启操作
Jul 07 Redis
springboot使用Redis作缓存使用入门教程
Jul 25 Redis
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
Feb 12 Redis
Redis之RedisTemplate配置方式(序列和反序列化)
Mar 13 Redis
一文搞懂Redis中String数据类型
Apr 03 Redis
浅谈Redis缓冲区机制
Jun 05 Redis
Redis配置外网可访问(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
fgetcvs在linux的问题
2012/01/15 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
javascript创建数组之联合数组的使用方法示例
2013/12/26 Javascript
jQuery网页选项卡插件rTabs用法实例分析
2015/08/26 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
2016/05/19 Javascript
JavaScript中的ajax功能的概念和示例详解
2016/10/17 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
微信小程序实现顶部普通选项卡效果(非swiper)
2020/06/19 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
Vue脚手架的简单使用实例
2018/07/10 Javascript
React性能优化系列之减少props改变的实现方法
2019/01/17 Javascript
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
利用python获取某年中每个月的第一天和最后一天
2016/12/15 Python
Python中的默认参数实例分析
2018/01/29 Python
python之文件读取一行一行的方法
2018/07/12 Python
对python中dict和json的区别详解
2018/12/18 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
配置python的编程环境之Anaconda + VSCode的教程
2020/03/29 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
文科生自我鉴定
2014/02/15 职场文书
会计的岗位职责
2014/03/15 职场文书
西安大雁塔导游词
2015/02/10 职场文书
浅谈如何提高PHP代码的质量
2021/05/28 PHP
Django Paginator分页器的使用示例
2021/06/23 Python
idea编译器vue缩进报错问题场景分析
2021/07/04 Vue.js
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server