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通过6379端口无法连接服务器(redis-server.exe闪退)
May 08 Redis
浅谈Redis存储数据类型及存取值方法
May 08 Redis
基于Redis延迟队列的实现代码
May 13 Redis
比较几种Redis集群方案
Jun 21 Redis
redis客户端实现高可用读写分离的方式详解
Jul 04 Redis
redis不能访问本机真实ip地址的解决方案
Jul 07 Redis
linux下安装redis图文详细步骤
Dec 04 Redis
Redis 的查询很快的原因解析及Redis 如何保证查询的高效
Mar 16 Redis
redis调用二维码时的不断刷新排查分析
Apr 01 Redis
redis 解决库存并发问题实现数量控制
Apr 08 Redis
Redis 限流器
May 15 Redis
Redis基本数据类型Zset有序集合常用操作
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
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
2013/04/08 PHP
PHP设计模式之观察者模式定义与用法分析
2019/04/04 PHP
jquery异步跨域访问代码
2013/06/28 Javascript
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
JS的document.all函数使用示例
2013/12/30 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
json的使用小结
2016/06/08 Javascript
基于JS实现导航条flash导航条
2016/06/17 Javascript
Bootstrap下拉菜单样式
2017/02/07 Javascript
jQuery实现碰到边缘反弹的动画效果
2018/02/24 jQuery
Vue.js组件高级特性实例详解
2018/12/24 Javascript
[14:21]VICI vs EG (BO3)
2018/06/07 DOTA
python写的一个文本编辑器
2014/01/23 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
对python 操作solr索引数据的实例详解
2018/12/07 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
Flask-WTF表单的使用方法
2019/07/12 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
美国智能家居专家:tink
2019/06/04 全球购物
趣天网日本站:Qoo10 JP
2019/09/18 全球购物
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
init进程的作用
2015/08/20 面试题
高中历史教学反思
2014/02/08 职场文书
学生操行评语大全
2014/04/24 职场文书
城市轨道交通工程职业生涯规划书范文
2014/09/16 职场文书
初中生毕业评语
2014/12/29 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
pytorch查看网络参数显存占用量等操作
2021/05/12 Python
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers