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 sentinel 频繁主备切换的问题
Apr 12 Redis
在K8s上部署Redis集群的方法步骤
Apr 27 Redis
redis通过6379端口无法连接服务器(redis-server.exe闪退)
May 08 Redis
详解Redis主从复制实践
May 19 Redis
SpringBoot 集成Redis 过程
Jun 02 Redis
redis实现的四种常见限流策略
Jun 18 Redis
Redis RDB技术底层原理详解
Sep 04 Redis
Redis中缓存穿透/击穿/雪崩问题和解决方法
Dec 04 Redis
面试分析分布式架构Redis热点key大Value解决方案
Mar 13 Redis
使用Redis实现点赞取消点赞的详细代码
Mar 20 Redis
Redis 报错 error:NOAUTH Authentication required
May 15 Redis
Redis基本数据类型Set常用操作命令
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
Protoss兵种介绍
2020/03/14 星际争霸
一个程序下载的管理程序(二)
2006/10/09 PHP
php定义数组和使用示例(php数组的定义方法)
2014/03/29 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
2016/06/13 PHP
有关于eclipse配置spket需要注意的一些地方
2013/04/07 Javascript
Jquery倒数计时按钮setTimeout的实例代码
2013/07/04 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
Javascript 详解封装from表单数据为json串进行ajax提交
2017/03/29 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
layui实现数据表格隐藏列的示例
2019/10/25 Javascript
vue 判断元素内容是否超过宽度的方式
2020/07/29 Javascript
JavaScript实现移动端拖动元素
2020/11/24 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
python读取excel指定列数据并写入到新的excel方法
2018/07/10 Python
python实现彩票系统
2020/06/28 Python
uwsgi+nginx部署Django项目操作示例
2018/12/04 Python
Python目录和文件处理总结详解
2019/09/02 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
使用python实现数组、链表、队列、栈的方法
2019/12/20 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
Kiehl’s科颜氏西班牙官方网站:源自美国的植物护肤品牌
2020/02/22 全球购物
文秘专业应届生求职信范文
2013/11/14 职场文书
大学四年职业生涯规划书范文
2014/01/02 职场文书
英语道歉信范文
2014/01/09 职场文书
2014年商场国庆节活动策划方案
2014/09/16 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
2014年调度员工作总结
2014/11/19 职场文书
python3实现无权最短路径的方法
2021/05/12 Python