这次跟门子轩写了个查找附近的人,功能是使用同一软件的人可以将地理位置信息上传到服务器,其他人可通过查找的功能将指定距离内的人的相关信息(包括地理位置信息)查找出来。其实没什么技术含量,整个工程中最核心的地方就是用到了百度地图提供的lbs接口,通过这个接口访问百度地图提供的数据库,可以实现对表的增删改查等命令,也可以精确的计算gps之间的距离。工程分为服务器与客户端,客户端可以上传GPS信息,服务器
转载 2023-06-30 23:46:07
117阅读
笔者之前文章介绍过geohash算法,那么今天,我们来讲一下Redis的geo功能。 GeoHash与Z阶曲线的关系 1 引言“附近的人”在社交类APP已成为标配的功能,简单一点的实现方式可以把坐标存至关系型数据库,通过计算的坐标点距离实现,这种计算可行但计算速度远不及内存操作级别的NoSql数据库。基于Redis的geo就可以轻松实现。2 Redis处理位置坐标点的思路Redis中经纬
一、查询附近人: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
162阅读
背景介绍:目前随着电商、社交、游戏和代购等的流行,“附近的人”这一功能提供了一种便捷的方式允许同一地区或者一定距离范围内的用户进行相互交流的途径,一般都是在用户点击某个菜单或按钮时记录用户的坐标信息,拿微信的“附近的人”功能举例子,如下图所示,当你在点击附近的人时微信服务端会提示获取你所在位置的经纬度,记录到服务端,右上角的小脚印就表示你的经纬度信息被记录。然后服务端会根据你的位置信息拉取附近同样
介绍早在15年的 Redis 3.2 开始就已提供了 GEO 相关方法,可用来实现 LBS 搜索:geoadd:增加某个地理位置的坐标geopos:获取某个地理位置的坐标geodist:获取两个地理位置的距离georadius:根据给定地理位置坐标获取指定范围内的地理位置集合。georadiusbymember:根据给定地理位置获取指定范围内的地理位置集合geohash:获取某个地理位置的 geo
各种社交软件里面都有附件的人的需求,在该应用中,我们查询附近 1 公里的食客,同时只需查询出 20 个即可。解决基于地理位置的搜索,很多数据库品牌都支持:MySQL、MongoDB、Redis 等都能支持地理位置的存储。 当用户登录应用时,或者保持用户登录后用户在使用应用时,客户端是可以时刻获取用户位置信息的(前提是用户要开启位置获取的权限),客户端获取到最新的地理位置后,上传到后端服务器进行更
原创 2021-06-24 14:57:32
608阅读
文章目录1、GEOHash——如何“摇一摇”1-1、为什么需要GEOHash1-2、什么是GEOHash1-3、GEOHash编码的简易原理1-4、GEOHash的边缘问题2、Redis中GEOHash的应用GEOADD:增加地理位置的坐标(支持批量操作)GEOPOS:获取地理位置的坐标(支持批量操作)GEODIST:获取两个地理位置的距离GEORADIUS:根据给定地理位置坐标获取指定范围内的
针对“附近的人”这一位置服务领域的应用场景,常见的可使用 PG、MySQL 和 MongoDB 等多种 DB 的空间索引进行实现。 图片来自 Pexels而 Redis 另辟蹊径,结合其有序队列 ZSET 以及 GEOHASH 编码,实现了空间搜索功能,且拥有极高的运行效率。本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度。要提供完整的“附近的人”服务,最基本的是要实现“增”
文章目录前言GeoHash 算法简介常用命令 前言Redis 在 3.2 版本以后增加了地理位置 Geo 模块,意味着我们可以使用 Redis 来实现类似摩拜单车的“附近的共享单车”和微信“附近的人”这样的功能了。Redis 中 Geo 指令使用的是业界比较通用的地理位置距离排序算法 GeoHash 。GeoHash 算法简介GeoHash算法将二维的经纬度数据映射到一维的整数,这样所有的元素都
转载 2023-09-08 21:57:19
71阅读
# 使用 Java 和 Redis 实现查找附近的人 在当今的移动互联网时代,“附近的人”功能已经成为许多社交应用的标配。这种功能一般会基于用户的位置来推荐周围的人,提供更好的社交体验。本文将通过一个简单的示例,介绍如何使用 Java 和 Redis 来实现查找附近人的功能。 ## 一、项目背景 在本示例中,我们将使用 Redis 来存储用户的位置信息,利用 GeoHash 编码来快速查找附
原创 8月前
40阅读
# Java + Redis Geo 实现“附近的人”功能 在现代的应用开发中,地理信息的处理越来越重要。使用 Redis 的 Geo 功能,可以轻松实现“附近的人”这一功能。本文将介绍如何在 Java 中使用 Redis Geo API 来获取当前位置附近的人,并详细解析每一步的实现。 ## 文章结构 1. 流程概述 2. 环境准备 3. 步骤详解 - 3.1. 添加用户位置
原创 10月前
148阅读
引言昨天一位公众号粉丝和我讨论了一道面试题,个人觉得比较有意义,这里整理了一下分享给大家,愿小伙伴们面试路上少踩坑。面试题目比较简单:“让你实现一个附近的人功能,你有什么方案?”,这道题其实主要还是考察大家对于技术的广度,本文介绍几种方案,给大家一点思路,避免在面试过程中语塞而影响面试结果,如有不严谨之处,还望亲人们温柔指正!“附近的人” 功能生活中是比较常用的,像外卖app附近的餐厅,共享单车a
1. XMPP协议 与 OpenfireXMPP协议是IM领域的标准协议了,具体可参考  http://xmpp.org   及RFC6120,RFC6121,RFC6122等相关文档。 http://xmpp.org/xmpp-protocols/   XMPP协议实现,开源的也很多,server端可参考 http://xmpp.org/xmpp
转载 2024-05-22 16:12:29
27阅读
简介Redis 3.2 版本提供了GEO(地理信息定位)功能,支持存储地理位置信息用来实现诸如附近位置、摇一摇这类依赖于地理位置信息的功能,对于需要实现这些功能的开发者来说是一大音。GEO功能是 Redis 的另一位作者Matt Stancliff 借鉴 NoSQL 数据库 Ardb 实现的,Ardb 的作者来自中国,它提供了优秀的GEO功能。相关命令增加地理位置信息GEOADD自3.2.0可用
转载 2023-05-25 15:29:21
74阅读
最近在做一款交友软件的APP,现在有一个功能需要实现搜索附近的人。后来发现用redis 的GEO功能实现非常简。先说一下设计思路,每个用户在登陆的时候都会添加一下经纬度,这个是APP端获取的,然后设置一下这个经纬度到mysql数据库中,最后把经纬度同步到redis数据库中。我们先来了解一下 redis GEO功能。geoadd:增加某个地理位置的坐标。GEOADD key longitude l
前言:针对“附近的人”这一位置服务领域的应用场景,常见的可使用PG、MySQL和MongoDB等多种DB的空
转载 2022-03-18 15:23:33
190阅读
## 使用Java借助Redis实现附近的人 现在,很多社交应用都具有“附近的人”功能,可以让用户查看周围的其他用户。这个功能的实现需要考虑用户位置信息的存储和查询,而Redis作为一种高效的NoSQL数据库,可以很好地支持这个功能的实现。 ### Redis的地理位置数据结构 Redis提供了`GEO`相关的指令,可以用来存储和查询地理位置信息。在实现“附近的人”功能时,可以使用Redis
原创 2024-03-24 07:32:37
97阅读
各种社交软件里面都有附件的人的需求,在该应用中,我们查询附近1公里的食客,同时只需查询出20个即可。 文章目录1. Redis GEO常用命令2. 上传用户地理位置1. RedisKeyConstant2. 控制层 NearMeController3. 业务层 NearMeService4. 项目测试5. jmeter 构造数据3. 查找附近的人1. 视图 NearMeDinerVO2. 控制层
前言当前大多数app都有查找附近的功能, 简单的有查找周围的运动场馆, 复杂的有滴滴, 摩拜查找周围的车辆. 本文主要阐述查找附近地点的一般实现.方案比较方案1 (性能还不错)数据库直接存经纬度, 然后计算矩形边界值, 走索引查询方案2 (还没试过)将经纬度转换成 一个值, 然后进行比较查询 genhash方案3 (据说高性能, 性能怎样?待测试)方案1的实现(本文主要阐述此方案)实现环境: ja
  • 1
  • 2
  • 3
  • 4
  • 5