首页
学习
活动
专区
工具
TVP
发布

如何搞【附近的人】---挖坑开篇(一)

附近的人 众所周知,老李的【前前任】可能是国内最大的陌生渣滓聚集地,陌生渣滓聚集地的本质是啥? 搞附近的人 我连续“ 搞了将近三年附近的人 ”,然后后来的事儿群里的宝贝儿也都知道了:我离职跑路了。...就拿Wechat来说,每天至少有近千万PM从业者想指导张小龙应该做如何做Wechat。所以,你也不要怂,上去就是干。...你要做一个搞【附近的人】的APP,第一期的大概功能有如下几条: 常规登陆、注册功能,上传头像和修改昵称 列表形式,发现附近的人 发现的附近的人留言 总体说下来,界面就跟下面这个差不多: ?...登陆、注册这些都是常规业务功能,直接复制粘贴CRUD就可以了,唯一的难点在于: 如何发现附近的人 在正式开工前,你需要调研一下:实现LBS的方案都有哪些,他们的原理是什么,优缺点是什么,选哪个更合适。...欲知后事如何,且看下回装逼 ----------伟大的分割线-----------

57610

如何实现查找附近的人-GEO

背景打开美团,可以通过自身定位查看附近的商品。打开社交软件,可以查看附近的人交友。打开滴滴,可以查看的附近的共享单车,那这些是如何实现?...> jedis 5.1.0 附近的门店查找附近的门店...查询如果频繁,这个key容易成为热key,可以使用redis集群,同样的数据多设置几个key,比如:store_1,store_2,store_3 ,查询的时候可以根据用户id取余,命中不同的key查询附近的人社交软件...,经常看到附近的人,怎么做呢实现思路打开软件,当点击附近的人,定位自身的坐标根据自身的坐标,去查询附近附近的人代码实现 public static void main(String[] args) {...5km的人,从近到远排序,并显示距离 GeoRadiusParam geoRadiusParam = new GeoRadiusParam(); geoRadiusParam.withDist

21220
您找到你想要的搜索结果了吗?
是的
没有找到

如何搞【附近的人】---挖坑开篇(一)

附近的人 众所周知,老李的【前前任】可能是国内最大的陌生渣滓聚集地,陌生渣滓聚集地的本质是啥? 搞附近的人 我连续“ 搞了将近三年附近的人 ”,然后后来的事儿群里的宝贝儿也都知道了:我离职跑路了。...就拿Wechat来说,每天至少有近千万PM从业者想指导张小龙应该做如何做Wechat。所以,你也不要怂,上去就是干。...你要做一个搞【附近的人】的APP,第一期的大概功能有如下几条: 常规登陆、注册功能,上传头像和修改昵称 列表形式,发现附近的人 发现的附近的人留言 总体说下来,界面就跟下面这个差不多: ?...登陆、注册这些都是常规业务功能,直接复制粘贴CRUD就可以了,唯一的难点在于: 如何发现附近的人 在正式开工前,你需要调研一下:实现LBS的方案都有哪些,他们的原理是什么,优缺点是什么,选哪个更合适。...欲知后事如何,且看下回装逼

51950

Redis 实现「附近的人

前言:针对“附近的人”这一位置服务领域的应用场景,常见的可使用PG、MySQL和MongoDB等多种DB的空间索引进行实现。...要提供完整的“附近的人”服务,最基本的是要实现“增”、“删”、“查”的功能。以下将分别进行介绍,其中会重点对查询功能进行解析。...其中,组合使用GEOADD和GEORADIUS可实现“附近的人”中“增”和“查”的基本功能。要实现微信中“附近的人”功能,可直接使用GEORADIUSBYMEMBER命令。...如何通过geohash网格的范围框选出元素对象?效率如何? 首先在每个geohash网格中的geohash值都是连续的,有固定范围。所以只要找出有序集合中,处在该范围的位置对象即可。...并可推算出Redis中GEORADIUS查找附近的人功能,时间复杂度为:O(N+log(M))。

65820

Redis如何让你加到了附近的人

其次,交友软件中附近的人非常频繁,所以推出了Redis的地址位置距离排序算法GeoHash。 本质上GeoHash算是一种数据结构吗?...geoAdd可以批量集合添加一批地理位置 ? geopos 可以获取地理位置的坐标,可以批量获取多个地理位置的坐标,命令格式为:GEOPOS key member [member ...] ?...但是大多数时候,只是想获取某个地理位置附近的其他地理位置,使用georadiusbymember则更为方便。...他不会排除自身 因为附近应用中出现的数据会出现大量的餐馆,加油站等,建议按城市,区域等进行划分来降低单个集合的大小。...众里寻他千百度 scan 如何在成千上万个key中删除特定前缀的key或者修改呢。 ? ?

73130

看用 Redis 如何实现微信「​附近的人」​功能?

前言:针对“附近的人”这一位置服务领域的应用场景,常见的可使用PG、MySQL和MongoDB等多种DB的空间索引进行实现。...要提供完整的“附近的人”服务,最基本的是要实现“增”、“删”、“查”的功能。以下将分别进行介绍,其中会重点对查询功能进行解析。...其中,组合使用GEOADD和GEORADIUS可实现“附近的人”中“增”和“查”的基本功能。 要实现微信中“附近的人”功能,可直接使用GEORADIUSBYMEMBER命令。...如何通过geohash网格的范围框选出元素对象?效率如何? 首先在每个geohash网格中的geohash值都是连续的,有固定范围。所以只要找出有序集合中,处在该范围的位置对象即可。...并可推算出Redis中GEORADIUS查找附近的人功能,时间复杂度为:O(N+log(M)) 其中N为指定半径范围内的位置元素数量,而M则是被九宫格圈住计算距离的元素的数量。

85950

利用 Redis 实现“附近的人”功能!

针对“附近的人”这一位置服务领域的应用场景,常见的可使用 PG、MySQL 和 MongoDB 等多种 DB 的空间索引进行实现。...要提供完整的“附近的人”服务,最基本的是要实现“增”、“删”、“查”的功能。 以下将分别进行介绍,其中会重点对查询功能进行解析。...其中,组合使用 GEOADD 和 GEORADIUS 可实现“附近的人”中“增”和“查”的基本功能。 要实现微信中“附近的人”功能,可直接使用 GEORADIUSBYMEMBER 命令。...②如何通过 GEOHASH 网格的范围框选出元素对象?效率如何? 首先在每个 GEOHASH 网格中的 GEOHASH 值都是连续的,有固定范围。所以只要找出有序集合中,处在该范围的位置对象即可。...并可推算出 Redis 中 GEORADIUS 查找附近的人功能,时间复杂度为:O(N+log(M))。 其中 N 为指定半径范围内的位置元素数量,而 M 则是被九宫格圈住计算距离的元素的数量。

94220

Redis 是怎么实现 “附近的人” 的?

针对“附近的人”这一位置服务领域的应用场景,常见的可使用PG、MySQL和MongoDB等多种DB的空间索引进行实现。...要提供完整的“附近的人”服务,最基本的是要实现“增”、“删”、“查”的功能。以下将分别进行介绍,其中会重点对查询功能进行解析。...其中,组合使用GEOADD和GEORADIUS可实现“附近的人”中“增”和“查”的基本功能。 要实现微信中“附近的人”功能,可直接使用GEORADIUSBYMEMBER命令。...如何通过geohash网格的范围框选出元素对象?效率如何? 首先在每个geohash网格中的geohash值都是连续的,有固定范围。所以只要找出有序集合中,处在该范围的位置对象即可。...并可推算出Redis中GEORADIUS查找附近的人功能,时间复杂度为:O(N+log(M)) 其中N为指定半径范围内的位置元素数量,而M则是被九宫格圈住计算距离的元素的数量。

1.4K10

简单几步,实现 Redis 查询 “附近的人

前言:针对“附近的人”这一位置服务领域的应用场景,常见的可使用PG、MySQL和MongoDB等多种DB的空间索引进行实现。...要提供完整的“附近的人”服务,最基本的是要实现“增”、“删”、“查”的功能。以下将分别进行介绍,其中会重点对查询功能进行解析。...其中,组合使用GEOADD和GEORADIUS可实现“附近的人”中“增”和“查”的基本功能。 要实现微信中“附近的人”功能,可直接使用GEORADIUSBYMEMBER命令。...如何通过geohash网格的范围框选出元素对象?效率如何? 首先在每个geohash网格中的geohash值都是连续的,有固定范围。所以只要找出有序集合中,处在该范围的位置对象即可。...并可推算出Redis中GEORADIUS查找附近的人功能,时间复杂度为:O(N+log(M)) 其中N为指定半径范围内的位置元素数量,而M则是被九宫格圈住计算距离的元素的数量。

57020

小程序里附近的人功能实现,云开发数据库实现附近的人附近多少公里内的好友

文末有源码 最近好多同学问石头哥附近的人如何实现。今天呢,就借助这篇文章,大家做一个系统的解答。...接下来就教大家如何实现附近的位置。 一,创建数据 首先我们查询附近的人的时候,需要先有附近人的位置,也就是经纬度。这里我以几个城市的经纬度为例。...二,查找附近的人 我们查找附近的人,肯定是想按照排序由近到远的显示附近的人在地图上,所以这里我们就要用到geoNear做聚合查询。...具体的代码后面大家列出来,我们先继续往下学习 三,获取当前的位置 我们要做附近的人肯定要先获取自己的位置,获取自己的位置就用wx.getLocation即可,对应文档如下 https://developers.weixin.qq.com...五,在地图上显示附近的人 既然位置都已经查询到了,我们就可以在地图上显示了,地图上显示用到了map组件的markers [watermark,type_ZmFuZ3poZW5naGVpdGk,shadow

92330

附近的人】系列之API安全(一)

我是老李,大家好,众所周知【附近的人】系列有一段时间没有更新了,搞得好像太监了似的,然而并没有...这一系列只是周期不太稳定、不太调而已,原因说来倒也简单: 一来是毕竟我有我自己的安排(主要是懒) 二来毕竟是免费的...]听到他的这句话后的我立马停止了这种文风回归到以前,(承接上文)如今正好再来一波儿放到【附近的人】服务系列文章中由其自成一章,并与尼古拉斯永强的安全系列文章环环相扣,想必定能承上启下、承前启后、画龙点睛...首先,在山人看来,API安全主要是指两个方面: 一来是API本身尽可能低概率的被滥用:这里主要是指被人扒裤衩了恶意调用了,curl随便搞,脚本嘻唰唰,甚至第三方客户端 二来是API和端飞数据尽可能低概率被其他人窥探到...php /* (imei和token都假设在http header中) 思路就是拿设备imei当作aes加密密钥,uid+imei进行加密,结果当token 用户登录成功后,把这个token...返回客户端 客户端保存好token,访问接下来api带上这个token以及imei API收到token后,利用imei进行解密,如果【能解密成功并且解密后的imei等于 API访问提交上来

67030

附近的人位置距离计算方法

附近的人的位置用经纬度表示,然后通过两点的经纬度计算距离。根据网上的推荐,最终采用geohash。...这样,若仅仅只按中心区域0110搜索附近的人反而不是正确的。于是引入周围8个区域的点。这样,可以把0110区域的人附近的点全部包含。...位于中心区域0110的人最大附近距离为:两个对角线b=2√2len。最小距离为:a=len 再次重申:可以肯定搜索到一个精度内的所有人,但还可以包含附近大于一个精度达部分人。...由于geohash区域内的人共享一个查询,因此将geohash的前缀作为key来缓存该区域附近的点。那么,其他该区域的人也可以使用本次查询的结果。 用java做分页处理。 第一次请求,所有数据缓存。...需求是附近的人,而我查看附近的人的翻页频率并不高,也就是说每次计算的次数很少。那我可以不用为了减少部分计算而加大存储。因为加大存储需要空间加倍,而减少计算影响不大。所以放弃每人都缓存数据。

2.1K70

揭开Redis“附近的人”的神秘面纱

来源:https://juejin.im/post/5da40462f265da5baf410a11 前言:针对“附近的人”这一位置服务领域的应用场景,常见的可使用PG、MySQL和MongoDB等多种...要提供完整的“附近的人”服务,最基本的是要实现“增”、“删”、“查”的功能。以下将分别进行介绍,其中会重点对查询功能进行解析。...其中,组合使用GEOADD和GEORADIUS可实现“附近的人”中“增”和“查”的基本功能。 要实现微信中“附近的人”功能,可直接使用GEORADIUSBYMEMBER命令。...如何通过geohash网格的范围框选出元素对象?效率如何? 首先在每个geohash网格中的geohash值都是连续的,有固定范围。所以只要找出有序集合中,处在该范围的位置对象即可。...并可推算出Redis中GEORADIUS查找附近的人功能,时间复杂度为:O(N+log(M)) 其中N为指定半径范围内的位置元素数量,而M则是被九宫格圈住计算距离的元素的数量。

91320

用 Redis 查询 “附近的人” !妙啊!

针对“附近的人”这一位置服务领域的应用场景,互联网应用几乎每天都会用到,比如搜附近的美食,周边游等等;常见的可使用PG、MySQL和MongoDB等多种DB的空间索引进行实现。...要提供完整的“附近的人”服务,最基本的是要实现“增”、“删”、“查”的功能。以下将分别进行介绍,其中会重点对查询功能进行解析。...其中,组合使用GEOADD和GEORADIUS可实现“附近的人”中“增”和“查”的基本功能。要实现微信中“附近的人”功能,可直接使用GEORADIUSBYMEMBER命令。...如何通过geohash网格的范围框选出元素对象?效率如何?首先在每个geohash网格中的geohash值都是连续的,有固定范围。所以只要找出有序集合中,处在该范围的位置对象即可。...并可推算出Redis中GEORADIUS查找附近的人功能,时间复杂度为:O(N+log(M))。

18740

使用Redis实现附近的人及打车服务

面向LBS应用的GEO数据类型 各种社交软件里面都有附件的人的需求,在该应用中,我们查询附近 1 公里的食客,同时只需查询出 20 个即可。...,获取车辆信息,并返回用户 可见,一辆车(或用户)对应一组经纬度,并随车(或用户)的位置移动,相应经纬度也会变化。...将所有方格的编码值映射到一维空间,相邻方格GeoHash编码值也接近: 所以,使用Sorted Set范围查询得到的相近编码值,在实际地理空间也是相邻方格,即可实现LBS应用“附近的人”。...如LBS应用执行下面命令: # 根据输入的用户经纬度信息,查找以该经纬度为中心的5公里内车辆信息,返回LBS应用 GEORADIUS cars:locations 116.054579 39.030452...更新坐标 查找附近的人

1.1K20

如何使用postgis做一个高可用的附近的人服务?

如何在既定的时限内响应用户的请求,如何低成本的存储这些数据,是LBS应用最关键的问题。我们以附近的人为例,看一下如何去做一个生产级别的应用。...和SPATIAL_REF_SYS 二元谓词,包括:Contains、Within、Overlaps和Touches 空间操作符,包括:Union和Difference 实现/单机 我们首先看下单机版的附近的人...gis类型字段,支持POINT、POLYGON等多种数据类型,我们后续的排序和计算都将使用此字段 为loc字段创建空间索引(GIST索引),可以进行排序、计算距离等 如图,我们要查询某个用户最近N天附近的人...我们从以下几个方面探讨如何做一个可伸缩的高可用附近的XX。...比如查询一批拥有"逗逼"标签的人 我们采用pg的另外一个原因就是,它的数据类型非常丰富,这在使用中就显得特别简洁和方便。pg是一个学术派很浓的数据库,能够试用一些最前沿功能。

2.5K50

继续搞【附近的人】---MySQL搞LBS(二)

所以,从现在开始,我们需要搞明白两件事: 搞明白经纬度到geohash字符串的算法流程 如何在工程代码里具体实现这个过程 ? 我们的地球从东西维度分为东西半球,从南北维度分为南北半球。...有兴趣的同学可以打开下面的链接http://geohash.cn,然后大概定位到银川市、太原市附近,随便点一下,感受到了没有?然后我们结合下图大概说下wq如何定位的点的简单流程。 ?...我们用geohash将某个区域划分成32个方块块,然后每个方块块一坨字符串来标记,有时候会产生一个问题。看下图这种业务场景,你们感受一下: ?...从人类角度出发,如果说二狗要找TA附近的沙县小吃,那么沙县小吃B应该是TA的最佳选择。...问的全都是各种业务逻辑实现的细节,对我这种能搞出来0-90但是90-100搞不好的人来说真的是全方位的打击,当时从东软出来后真想一头扎在地上。

2.1K20
领券