一、查询附近人:Geo指令,底层是普通的zst结构,提供7个命令1)添加指令:geoadd 指令携带集合名称以及多个经纬度名称三元组,注意这里可以加入多个三元组geoadd company 116.48105 39.996794 juejin2)计算距离:geodist 指令可以用来计算两个元素之间的距离,携带集合名称、2 个名称和距离单位geodist company juejin ireade
之前分享过一篇《使用geohash实现查找附近的人》,其实redis在3.2版本之后也提供了地理位置的能力。geoadd命令该命令是添加地理位置信息,基本格式是:基于Redis实现查找附近的人 key:键名 longitude:经度 latitude:纬度 member:该位置名字 举个例子,我现在要添加福州的软件园的地理位置。首先我通过某歌地图搜索到软件园,右键地点,点击“这儿有什么”,就会弹出
转载 2023-07-11 20:37:44
128阅读
文章目录前言GeoHash 算法简介常用命令 前言Redis 在 3.2 版本以后增加了地理位置 Geo 模块,意味着我们可以使用 Redis 来实现类似摩拜单车的“附近的共享单车”和微信“附近的人”这样的功能了。Redis 中 Geo 指令使用的是业界比较通用的地理位置距离排序算法 GeoHash 。GeoHash 算法简介GeoHash算法将二维的经纬度数据映射到一维的整数,这样所有的元素都
转载 2023-09-08 21:57:19
54阅读
笔者之前文章介绍过geohash算法,那么今天,我们来讲一下Redis的geo功能。 GeoHash与Z阶曲线的关系 1 引言“附近的人”在社交类APP已成为标配的功能,简单一点的实现方式可以把坐标存至关系型数据库,通过计算的坐标点距离实现,这种计算可行但计算速度远不及内存操作级别的NoSql数据库。基于Redis的geo就可以轻松实现。2 Redis处理位置坐标点的思路Redis中经纬
这次跟门子轩写了个查找附近的人,功能是使用同一软件的人可以将地理位置信息上传到服务器,其他人可通过查找的功能将指定距离内的人的相关信息(包括地理位置信息)查找出来。其实没什么技术含量,整个工程中最核心的地方就是用到了百度地图提供的lbs接口,通过这个接口访问百度地图提供的数据库,可以实现对表的增删改查等命令,也可以精确的计算gps之间的距离。工程分为服务器与客户端,客户端可以上传GPS信息,服务器
转载 2023-06-30 23:46:07
77阅读
redis使用API查询数据,当碰到多个key查询的时候,会下意识的使用循环的查询方式。
转载 2023-06-26 18:23:55
58阅读
当两个元素的距离不是很远时,可以直接使⽤勾股定理就能算得元素之间的距离。我们平时使⽤的「附近的⼈」的功能,元素距离都不是很⼤,勾股定理算距离⾜矣。不过需要注意的是,经纬度坐标的密度不⼀样 (地球是⼀个椭圆),勾股定律计算平⽅差时之后再求和时,需要按⼀定的系数⽐加权求和,如果不求精确的话,也可以不必加权。业界⽐较通⽤的地理位置距离排序算法是 GeoHash 算法,Redis 也使⽤ GeoHash
各种社交软件里面都有附件的人的需求,在该应用中,我们查询附近1公里的食客,同时只需查询出20个即可。 文章目录1. Redis GEO常用命令2. 上传用户地理位置1. RedisKeyConstant2. 控制层 NearMeController3. 业务层 NearMeService4. 项目测试5. jmeter 构造数据3. 查找附近的人1. 视图 NearMeDinerVO2. 控制层
背景介绍:目前随着电商、社交、游戏和代购等的流行,“附近的人”这一功能提供了一种便捷的方式允许同一地区或者一定距离范围内的用户进行相互交流的途径,一般都是在用户点击某个菜单或按钮时记录用户的坐标信息,拿微信的“附近的人”功能举例子,如下图所示,当你在点击附近的人时微信服务端会提示获取你所在位置的经纬度,记录到服务端,右上角的小脚印就表示你的经纬度信息被记录。然后服务端会根据你的位置信息拉取附近同样
介绍早在15年的 Redis 3.2 开始就已提供了 GEO 相关方法,可用来实现 LBS 搜索:geoadd:增加某个地理位置的坐标geopos:获取某个地理位置的坐标geodist:获取两个地理位置的距离georadius:根据给定地理位置坐标获取指定范围内的地理位置集合。georadiusbymember:根据给定地理位置获取指定范围内的地理位置集合geohash:获取某个地理位置的 geo
作者简介:万汨,饿了么资深开发工程师。iOS,Go,Java均有涉猎。目前主攻大数据开发进行解析,并推算查询时间复杂度。...
转载 2022-09-24 00:09:47
1640阅读
​作者简介:万汨,饿了么资深开发工程师。iOS,Go,Java均有涉猎。目前主攻大数据开发。喜欢骑行、爬山。前言:针对“附近的人”这一位置服务领域的应用场景,常见的可使用PG、MySQL和MongoDB等多种DB的空间索引进行实现。而Redis另辟蹊径,结合其有序队列zset以及geohash编码,实现了空间搜索功能,且拥有极高的运行效率。本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度
转载 2022-09-20 21:15:11
99阅读
文章目录1、GEOHash——如何“摇一摇”1-1、为什么需要GEOHash1-2、什么是GEOHash1-3、GEOHash编码的简易原理1-4、GEOHash的边缘问题2、Redis中GEOHash的应用GEOADD:增加地理位置的坐标(支持批量操作)GEOPOS:获取地理位置的坐标(支持批量操作)GEODIST:获取两个地理位置的距离GEORADIUS:根据给定地理位置坐标获取指定范围内的
各种社交软件里面都有附件的人的需求,在该应用中,我们查询附近 1 公里的食客,同时只需查询出 20 个即可。解决基于地理位置的搜索,很多数据库品牌都支持:MySQL、MongoDB、Redis 等都能支持地理位置的存储。 当用户登录应用时,或者保持用户登录后用户在使用应用时,客户端是可以时刻获取用户位置信息的(前提是用户要开启位置获取的权限),客户端获取到最新的地理位置后,上传到后端服务器进行更
原创 2021-06-24 14:57:32
571阅读
针对“附近的人”这一位置服务领域的应用场景,常见的可使用 PG、MySQL 和 MongoDB 等多种 DB 的空间索引进行实现。 图片来自 Pexels而 Redis 另辟蹊径,结合其有序队列 ZSET 以及 GEOHASH 编码,实现了空间搜索功能,且拥有极高的运行效率。本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度。要提供完整的“附近的人”服务,最基本的是要实现“增”
楔子查询附近的人或者附近的商家等等是一个非常常用并且实用的功能,比如:我们经常使用高德地图、百度地图或者其它地图,去查询我们想去的目的地在什么位置,并且还会显示距离。如果我们去的地方有多个,比如我们想去招商银行,但如果附近有多个招商银行,那么地图会显示附近的所有银行,并默认按照距离进行排序,然后我们可以选择离我们最近的一个。我们以在美团上搜索自助餐为例:我们看到美团帮我们把商店和离我们当前位置的距
1. XMPP协议 与 OpenfireXMPP协议是IM领域的标准协议了,具体可参考  http://xmpp.org   及RFC6120,RFC6121,RFC6122等相关文档。 http://xmpp.org/xmpp-protocols/   XMPP协议实现,开源的也很多,server端可参考 http://xmpp.org/xmpp
简介Redis 3.2 版本提供了GEO(地理信息定位)功能,支持存储地理位置信息用来实现诸如附近位置、摇一摇这类依赖于地理位置信息的功能,对于需要实现这些功能的开发者来说是一大音。GEO功能是 Redis 的另一位作者Matt Stancliff 借鉴 NoSQL 数据库 Ardb 实现的,Ardb 的作者来自中国,它提供了优秀的GEO功能。相关命令增加地理位置信息GEOADD自3.2.0可用
转载 2023-05-25 15:29:21
59阅读
最近在做一款交友软件的APP,现在有一个功能需要实现搜索附近的人。后来发现用redis 的GEO功能实现非常简。先说一下设计思路,每个用户在登陆的时候都会添加一下经纬度,这个是APP端获取的,然后设置一下这个经纬度到mysql数据库中,最后把经纬度同步到redis数据库中。我们先来了解一下 redis GEO功能。geoadd:增加某个地理位置的坐标。GEOADD key longitude l
前言:针对“附近的人”这一位置服务领域的应用场景,常见的可使用PG、MySQL和MongoDB等多种DB的空
转载 2022-03-18 15:23:33
169阅读
  • 1
  • 2
  • 3
  • 4
  • 5