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 24 Redis
Redis IP地址的绑定的实现
May 08 Redis
深入浅析Redis 集群伸缩原理
May 15 Redis
Redis Cluster 字段模糊匹配及删除
May 27 Redis
Redis可视化客户端小结
Jun 10 Redis
浅谈Redis位图(Bitmap)及Redis二进制中的问题
Jul 15 Redis
Redis入门教程详解
Aug 30 Redis
基于Redis结合SpringBoot的秒杀案例详解
Oct 05 Redis
浅谈Redis的keys命令到底有多慢
Oct 05 Redis
使用RedisTemplat实现简单的分布式锁
Nov 20 Redis
分布式Redis Cluster集群搭建与Redis基本用法
Feb 24 Redis
Redis基本数据类型哈希Hash常用操作命令
Jun 01 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
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
php的正则处理函数总结分析
2008/06/20 PHP
解析php中的escape函数
2013/06/29 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
PHP使用反向Ajax技术实现在线客服系统详解
2019/07/01 PHP
JavaScript 计算当天是本年本月的第几周
2009/03/22 Javascript
ext 同步和异步示例代码
2009/09/18 Javascript
js 使用form表单select类实现级联菜单效果
2012/12/19 Javascript
JavaScript数据类型之基本类型和引用类型的值
2015/04/01 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
2015/06/17 Javascript
如何解决ligerUI布局时Center中的Tab高度大小
2015/11/24 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
jQuery中layer分页器的使用
2017/03/13 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
2017/06/25 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
2019/02/13 Javascript
Vue+tracking.js 实现前端人脸检测功能
2020/04/16 Javascript
Python 列表list使用介绍
2014/11/30 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
数控专业大学毕业生职业规划范文
2014/02/06 职场文书
男性健康日的活动方案
2014/08/18 职场文书
群众路线四风自我剖析材料
2014/10/08 职场文书
党的群众路线教育实践活动个人对照检查材料(乡镇)
2014/11/05 职场文书
大班上学期个人总结
2015/02/13 职场文书
2015年度护士个人工作总结
2015/04/09 职场文书
债务追讨律师函
2015/06/24 职场文书
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang
Python 处理表格进行成绩排序的操作代码
2021/07/26 Python
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis
Python实现仓库管理系统
2022/05/30 Python