redis中使用GeoHash
redis中使用GeoHash
- 1.GeoHash底层原理
- 2. 基本使用
1.GeoHash底层原理
1.Redis3.2开始提供GEO模块,该模块使用了GeoHash算法
2.核心思想:GeoHash是一种地址编码方式,其将二维的空间经纬度数据编码成一个一维字符串。我们大致可以将大致划分如下图这个范围。GeoHash算法就是基于这种思想,不断地去划分区域,划分次数越多,精度越高。
3.具体算法:
这里以广州的经纬度为例子,113.229259,23.17652
这里就拿纬度23.17652来说,纬度的范围为【-90,90】,23.17652在【0,90】之间,故可以得到一个值1,再次划分,【0,90】的中间值为45,23.17652落在【0,45】之间,故得到一个0,【0,45】的中间值为22.5,23.17652落在【22.5,45】之间,故可以得到一个1…假设最后得到的结果为101,经度算出的结果为110,合并这两个值,规律为经度占偶数位,纬度占奇数位,这样可以得到一个结果111001,按照Base32对合并后的结果集进行编码,得到一个字符串,这个字符串可以到可以拿去 geohash.org 网站上解析,就可以看到地址是在哪了。
2. 基本使用
1.添加地址
geoadd city 116.332906 39.892695 beijing
geoadd city 114.064552 22.548457 shenzhen
- 算出两个地址的距离
geodist city beijing shenzhen km
- 获取元素的位置,有可能会有误差
geopos city beijing
- 获取元素的hash值
geohash city beijing
- 以北京为中心,方圆2000km的城市由近到远列出4个,不排除北京本身
georadiusbymember city beijing 2000 km withdist withhash withcoord count 4 asc
6.也可以根据经纬度来查询附近城市
georadius city 116.332906 39.892695 2000 km withdist withhash withcoord count 4 asc
redis中使用GeoHash相关推荐
- 数据类型_分享redis中除5种基础数据类型以外的高级数据类型
众所周知,在redis中的数据类型有String(字符串).hash(哈希).list(列表).set(集合).zset(有序集合)五种.但在这5种之外还有高级数据类型. 今天和大家介绍下常用的高级数 ...
- Redis中三种特殊数据类型
本文来说下Redis中三种特殊数据类型 文章目录 Gerspatial地理位置 Hyperloglog基数统计 Bitmap位图 Gerspatial地理位置 一共 6 个命令: GEOADD GEO ...
- Redis中地理位置GEO模块,非常便捷的来查找附近的人或物
从Redis3.2 版本以后,增加了地理位置 GEO 模块,这个模块提供了6个Geo指令,分别是geoadd.geodist.geopos.geohash.georadiusbymember及geor ...
- Redis中五大基本数据类型和三种特殊数据类型详解
目录 介绍 概念 基本命令 redis是单线程的 五大基本数据类型 String 命令 应用场景 List 命令 应用场景 Set 命令 应用场景 Hash 命令 应用场景 Zset 命令 应用场景 ...
- Redis中的Bitmaps、HyperLogLog、Geospatial
目录 Bitmaps 如何选择集合类型 判断用户登录状态 小结 HyperLogLog 什么是基数 应用场景 命令 Geospatial 如何实现定位 Geohash技术 geohash的计算 geo ...
- java必学之Redis中的数据结构
目录 一.String不在适用Redis底层数据结构 1.String类型的内存消耗问题 2:String类型怎么保存数据 2.1RedisObject结构体: 2.2int.embstr和raw这三 ...
- 函数指针--Nginx和Redis中两种回调函数写法
1.Nginx和Redis中两种回调函数写法 #include <stdio.h>//仿Nginx风格 //结构外声明函数指针类型 typedef void (*ngx_connectio ...
- Redis初学:14(Redis中的事务)
Redis中的事务 Redis的事务定义 Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化.按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的命令请求所打断. Redis事务的主 ...
- Redis中字符串string数据类型(保存(设置键值、过期时间、设置多个键值、追加值)、获取(获取单一键值、获取多个键值))
字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等.在Redis中字符串类型的V ...
最新文章
- ThinkPHP5.0中Redis的使用和封装(原创)
- 如何把PB程序的数据库从ASA迁移到ASE?
- python爬虫自学笔记分析解密_Python爬虫自学系列(七) -- 项目实战篇(一)
- jmeter测试java接口测试_简单易学的测试攻略:JMeter测试Java请求示例
- PPT|工业互联网关键技术专利态势
- apache 查看本地页面_GeoSever的页面实现
- 读完这些论文和代码,你就能在搜狐算法大赛中获得好成绩了
- Linq使用Group By
- Redis集群-哨兵模式
- 应用环境下的TIME_WAIT和CLOSE_WAIT
- ssh(Spring+Spring mvc+hibernate)——Dept.hbm.xml
- 火星人谚语系列之五:答案将由我在下一分钟给出(心想事成)
- Linux之父道歉后,Linux社区颁布开发人员行为准则
- 运维工程师之-MySQL的故障问题总结
- 4. 创建 bundle
- 南阳oj题目20吝啬的国度 菜鸟的进阶之路
- Nacos下载与安装
- 图片拉伸:拉伸两边,保持中间不动
- 服务器被攻击 常见的服务器攻击方式有哪些
- 使用yagmail模块群发工资条