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 相关文章推荐
Redis6.0搭建集群Redis-cluster的方法
May 08 Redis
Redis数据结构之链表与字典的使用
May 11 Redis
redis内存空间效率问题的深入探究
May 17 Redis
浅谈Redis主从复制以及主从复制原理
May 29 Redis
详解Redis基本命令与使用场景
Jun 01 Redis
Jedis操作Redis实现模拟验证码发送功能
Sep 25 Redis
redis数据结构之压缩列表
Mar 21 Redis
redis复制有可能碰到的问题汇总
Apr 03 Redis
浅谈Redis变慢的原因及排查方法
Jun 21 Redis
Redis sentinel哨兵集群的实现步骤
Jul 15 Redis
redis protocol通信协议及使用详解
Jul 15 Redis
基于Redission的分布式锁实战
Aug 14 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 删除数组元素
2009/01/16 PHP
ThinkPHP Mobile使用方法简明教程
2014/06/18 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
js 模拟气泡屏保效果代码
2010/07/10 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
jQuery操作JSON的CRUD用法实例
2015/02/25 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
python采集百度百科的方法
2015/06/05 Python
12步教你理解Python装饰器
2016/02/25 Python
Python中格式化format()方法详解
2017/04/01 Python
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
Python面向对象基础入门之编码细节与注意事项
2018/12/11 Python
5分钟 Pipenv 上手指南
2018/12/20 Python
Django unittest 设置跳过某些case的方法
2018/12/26 Python
Python创建数字列表的示例
2019/11/28 Python
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
公司财务工作总结的自我评价
2013/11/23 职场文书
村长贪污检举信
2014/04/04 职场文书
三八红旗手先进事迹材料
2014/05/13 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
2014年驾驶员工作总结
2014/11/18 职场文书
关于学习的决心书
2015/02/05 职场文书
地震捐款简报
2015/07/21 职场文书
2016年记者节感言
2015/12/08 职场文书
《神奇的鸟岛》教学反思
2016/02/22 职场文书
springboot如何接收application/x-www-form-urlencoded类型的请求
2021/11/02 Java/Android
Python matplotlib多个子图绘制整合
2022/04/13 Python
LyScript实现绕过反调试保护的示例详解
2022/08/14 Python