首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用 Redis 如何实现查询附近的人?「视频版」——面试突击 003 期

面试问题 Redis 如何实现查询附近的人? 涉及知识点 Redis 中如何操作位置信息? GEO 底层是如何实现如何在程序实现查询附近的人? 在实际使用中需要注意哪些问题?...视频答案 视频地址:https://www.bilibili.com/video/av89369236/ 图文答案 Redis 中要实现查询附近的人,需要使用 Redis 3.2 版本中提供 GEO...数据类型,它包含以下几个重要方法: GEOADD 添加元素位置信息; GEOPOS 查询元素经纬度信息; GEODIST 查询两个元素直线距离; GEORADIUS 查询附近一定距离元素信息。...: 小明和小红相距:3.9153 KM 小明附近的人:xiaohong 总结 GEO 是 Redis 3.2 版本中新增功能,只有升级到 3.2+ 才能使用,GEO 本质上是基于 ZSet 实现...,这点在 Redis 源码找到相关信息,我们可以 GEO 使用实现查找附近的人或者附近地点,还可以用它来计算两个位置相隔直线距离

45910

使用 Redis 如何实现查询附近的人?「视频版」——面试突击 003 期

面试问题 Redis 如何实现查询附近的人? 涉及知识点 Redis 中如何操作位置信息? GEO 底层是如何实现如何在程序实现查询附近的人? 在实际使用中需要注意哪些问题?...视频答案 视频地址:https://www.bilibili.com/video/av89369236/ 图文答案 Redis 中要实现查询附近的人,需要使用 Redis 3.2 版本中提供 GEO...数据类型,它包含以下几个重要方法: GEOADD 添加元素位置信息; GEOPOS 查询元素经纬度信息; GEODIST 查询两个元素直线距离; GEORADIUS 查询附近一定距离元素信息。...: 小明和小红相距:3.9153 KM 小明附近的人:xiaohong 总结 GEO 是 Redis 3.2 版本中新增功能,只有升级到 3.2+ 才能使用,GEO 本质上是基于 ZSet 实现,...这点在 Redis 源码找到相关信息,我们可以 GEO 使用实现查找附近的人或者附近地点,还可以用它来计算两个位置相隔直线距离

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

是什么能让 APP 快速精准定位到我们位置?

本文包含以下内容,阅读完需要约10分钟: 我们日常生活中遇到哪些定位场景 简单复习一下经纬度 geohash原理解析 geohash存在边界问题 如何解决边界问题 计算两点距离计算 geohash...答案就是 geohash geohash通过算法将1个定位经度和纬度2个数值,转换成1个hash字符串。如果2个地方距离越近,那么他们hash值前缀越相同。...我们将地球铺平开来,会得到下面这个平面图。 地球铺平面图 赤道和本初子午线为界,将地球分为经度和纬度。赤道是在0度,本初子午线也在0度。赤道作为经度X横坐标,本初子午线作为纬度 Y 竖坐标。...所以,当2个定位geohash 前7位是一样时,表示他们在附近1.2km范围内。...这就是边界问题。 边界问题 如何解决边界问题 那么如何解决这个边界问题,给出最近最优算法方案呢?答案就是:把定位附近8个方向geohash都算出来。

1.5K30

《算法竞赛进阶指南》0x17 二叉堆

现在我们可以从每个序列中选择一个数字形成具有 m 个整数序列。 很明显,我们一共可以得到 n^m 个这种序列,然后我们可以计算每个序列中数字之和,并得到 n^m 个值。...,每次我们就可以仅合并两个序列,问题就简单多了 蓝书上做法: 如何合并两个序列,简单情况为例,合并序列 A, B ,先对 A, B 排序 最小元素毫无疑问是 A[1] + B[1] ,则次小元素候选为...这 5 个办公楼分别位于距离大街起点 1km,3km,4km,6km 和 12km 处。 电信公司仅为你提供 K=2 条电缆。...输入格式 第一行输入整数 n 和 K ,其中 n 表示办公楼数目, K 表示可利用网络电缆数目。 接下来 n 行每行仅包含一个整数 s ,表示每个办公楼到大街起点处距离。...现在达达想要知道,如何选择 s_i ,才能使替换以后得到《荷马史诗》长度最小。 在确保总长度最小情况下,达达还想知道最长 s_i 最短长度是多少?

42070

程序员如何吃鸡?数据教你怎么玩吃鸡游戏

就连小甲也会在周末时候顺手玩上几盘游戏。 那么,怎么才能吃鸡呢?什么时候跳飞机?跳到地图上什么地方?步行和开车哪个获胜可能性更大?选择当伏地魔就一定正确吗?第一人称和第三人称哪个姿势更容易吃鸡?...我们最终获得第一名的人或者团队开始跳伞时候坐标确定位置并做成图可以看到,无论在沙漠还是在海岛地图中,获得第一名都人都跳伞都集中在地图主城中几个比较大建筑。...事实上,步行和驾车距离并没有一个明确关系,只是当驾车距离与在2-5km之内,并且步行距离在2-4km之间时,吃鸡可能性更大。换句话说步行和驾车距离类似是最理想状态。...开车距离大于8km之后获胜机会渺茫,而步行距离越远并不意味着丧失吃鸡机会。 问题3 是选择团队作战还是单枪匹马?当我们玩四人组队时候,一定要找四个人一起开黑为什么呢?...当你在一场四人赛中如果能救助队友达到2次或者以上,吃鸡可能性会得到一个较大提高,当你在比赛中救助队友达到7次或者更高时候,你几乎可以吃鸡了。

1.2K60

揭秘!是什么能让APP快速精准定位?

答案就是geohash。 geohash通过算法将1个定位经度和纬度2个数值,转换成1个hash字符串。如果2个地方距离越近,那么他们hash值前缀越相同。...赤道为0度,向南北各分出90度,南北极读数均是90度,北纬用“N”表示 :(0, 90] ,南纬用“S”表示: [-90, 0)。 注意:纬线和纬线是角度数值,并不是米。[表示等于,(表示小于。...所以,当2个定位geohash前7位是一样时,表示他们在附近1.2km范围内。...我们想找腾大附近1.5km范围内便利店,我们选取geohash精度为6。园区有2家A和B。B距离我们更近一点,但是,由于A和腾大在一个hash区块内,所以,就得出了A是最佳选择。...这就是边界问题。 六、如何解决边界问题 那么如何解决这个边界问题,给出最近最优算法方案呢?答案就是:把定位附近8个方向geohash都算出来。

1.3K20

特征工程系列之非线性特征提取和模型堆叠

它们通常用于 2-D 或 3-D 可视化。 然而,特征工程目的并不是要使特征维数尽可能低,而是要达到任务正确特征。在这一章中,正确特征是代表数据空间特征特征。...由于目标是最小化在所有输入维度上总欧氏距离,所以聚类过程将试图平衡目标值和原始特征空间中相似性。可以在聚类算法中对目标值进行缩放获得更多或更少关注。...与独热簇相反,数据点也可以由其逆距离密集向量表示到每个聚类中心。...反向距离表示是密集,这对于建模步骤可能花费更昂贵,但是这可以需要较小 K 。 稀疏和密集之间折衷是只保留最接近 p 距离。但是现在 P 是一个额外超参数需要去调整。...n 表示数据点数量, D (原始)特征数量。 对于 k 均值,训练时间是 O(nkd) ,因为每次迭代涉及计算每个数据点和每个质心( k )之间 d 维距离

1.3K40

七天玩转Redis | Day3、Redis地理位置、基数统计、位图场景使用详解

输入两个位置,我们就可以得到两个位置之间距离。或者你想要查询你附近500米以内超市,那么你直接点击范围就可以。还有我们QQ、微信、玩游戏时候附近的人查询你都可以查询得到。...longitude表示该位置经度 latitude表示该位置纬度 member表示地名 [longitude latitude member ...]表示可以重复添加,中间空格分隔 为了方便下面的命令使用...m(米,默认)、km(千米)、ft(英尺)、mi(英里) 如我们查询郑州到杭州直线距离米为单位, 127.0.0.1:6379> GEODIST china:city zhengzhou hangzhou...可选,表示是否输出经纬度 [WITHDIST]可选,表示是否输出距离 [WITHHASH]可选,表示是否输出哈希值 [COUNT count]可选,表示输出几个数据 [ASC|DESC]可选,表示按照距离升序还是降序排列...sourcekey为要合并数据集索引,可以存在多个,中间空格分隔 比如我们将“mynum1”和“mynum2”合并并集为“mynum4”,再求“mynum4”基数,得到13,是因为其中f和g

40610

机器学习(7)——聚类算法聚类算法

衡量样本之间相识度大小方式有下面几种: 闵可夫斯基距离(Minkowski距离)也就是前面提到范式距离 当p=1时为曼哈顿距离,公式如下(二维空间为例): ? image.png ?...,使每次处理后得到划分方式比上一次好(总数据集之间距离和变小了)。...) 求出模型中心点坐标,并且得到,样本到中心点距离,也就是前面提到损失函数。..._ print(cluter_centers) print("score其实就是所有样本点离所属簇中心点距离相反数:") print(km.score(X)) 得到结果如下: 所有样本距离所属簇中心点距离和为...(3)如果距离D小于T1,表示该节点属于该聚簇,添加到该聚簇列表中 (4)如果距离D小于T2,表示该节点不仅仅属于该聚簇,还表示和当前聚簇中心点非常近,所以将该聚簇中心点设置为该簇中所有样本中心点

3.5K70

如何为 DWDM Mux Demux 选择光收发器?

DWDM Mux Demux 和 DWDM 收发器是此类 DWDM 传输重要组成部分。如何为 DWDM Mux Demux 选择合适光模块对于高质量 DWDM 传输非常重要。...这篇文章给出了答案。...因此,DWDM收发器实际传输比模块标称传输距离要短,尤其是在老化光纤传输系统中。如有必要,可以增加EDFA和DCM设备,延长DWDM网络中传输距离。...面对不同传输距离,需要提前制定功率预算方案。10G网络为例,一个FS 40CH DWDM Mux Demux最大插入损耗为5dB。...如果传输距离超过40km或链路损耗大于10dB,则需要使用EDFA和DCM设备来延长传输距离。这时候收发模块传输距离相对不是很重要,所以80km波分模块是一个不错选择。

78220

如何选择聚类模块数目

一般来说,类似K-means聚类算法需要我们提取指定聚类得到cluster数目。 那么问题来了,如何为聚类选择一个适合cluster数目呢 ? 很遗憾,上面的问题没有一个确定答案。...另一个是R中内建方法hclust(): # 计算两两间距离,计算方法比较多,这里选择欧几里德距离dist.res = dist(iris.scaled, method='euclidean')# 进行层次聚类...假设我们聚类分成k个cluster,$Cr$表示第r个cluster,$nr$表示$Cr$中元素个数。...那$Cr$中元素两两距离之和为 $$ Dr = \sum{i,i'\in Cr}dii' $$ $i$和$i'$都是属于$Cr$中元素,$d{ii'}$计算可以按照欧拉距离来进行计算。...对3种聚类方法进行测试: library(cluster)set.seed(123)# 一般认为B=500就能得到一个比较好结果,这里设为50提高计算速度gap_stat = clusGap(iris.scaled

3.8K100

交友系统设计:哪种地理空间邻近算法更快?

表示纬度, 表示经度。...实际上,通过恰当地选择网格大小,我们不停访问当前用户位置周边网格就可以由近及远不断得到邻近其他用户,而不需要再通过 SQL 来得到。那么如何选择网格大小?如何根据用户位置得到其所在网格?...又如何得到当前用户位置周边其他网格呢?我们看 下实践中更常用动态网格和 GeoHash 算法。 3、动态网格算法 事实上,不管如何选择网格大小,可能都不合适。...下图表示经、纬度 二进制编码过程,最终得到纬度 12 位编码,经度 13 位编码。 得到两个二进制数后,再将它们合并成一个二进制数。...一个合格架构师除了要掌握系统整体架构,也要能把握住这些关键算法,才能在系统设计和开发中做到心中有数、控制自如。

18910

微信附近的人,用redis也能实现?(GEO)

获取自己位置 附近的人其实就是一种位置比对关系,所以第一步是得获取自己位置,一般位置都是用经纬度来表示,具体经纬度获取得依赖客户端,作为咱们后端程序员直接接收参数就可以了,所以这一步重点是用经纬度来表示各个节点位置...如何根据两个经纬度,获取到这两个点之间距离我在网上找了个方法,大家可以参考下 /** * 求两个已知经纬度之间距离,单位为米 * * @param lng1 $ ,lng2 经度 * @param...5km 以内数据就是我们想得到结果 把上次算出来距离一一对比,在 5km 以内数据就是我们需要附近的人数据。...2) "56.4413" 上述命令也就是说把 nearbyPeople 中 距离经纬度(15,37)200km 以内元素都找出来,而且带上距离 GEORADIUSBYMEMBER 其实和 GEORADIUS...首先我们可以在后台把每个人位置定时刷新到 nearbyPeople 为 key geo 对象中。

60210

redis | 九、redis之Geospatial

指定单位参数 unit 必须是以下单位其中一个: m 表示单位为米。 km 表示单位为千米。 mi 表示单位为英里。 ft 表示单位为英尺。...GEODIST 命令在计算距离时会假设地球为完美的球形, 在极限情况下, 这一假设最大会造成 0.5% 误差。 返回值 计算出距离双精度浮点数形式被返回。...范围可以使用以下其中一个单位: m 表示单位为米。 km 表示单位为千米。 mi 表示单位为英里。 ft 表示单位为英尺。...至于额外信息, 则会作为子数组后续元素, 按照以下顺序被返回: 浮点数格式返回中心与位置元素之间距离, 单位与用户指定范围时单位一致。 geohash 整数。...与类似的前缀字符串是附近,但相反是不正确,这是可能,用不同前缀字符串附近。 返回值 一个数组, 数组每个项都是一个 geohash 。

63120

Redis 实战篇:通过 Geo 类型实现附近的人邂逅女神

附近的人核心思想如下: “我” 为中心,搜索附近 Ta; “我” 当前地理位置为准,计算出别人和 “我” 之间距离; 按 “我” 与别人距离远近排序,筛选出离我最近用户。...MySQL 实现 “计算「附近的人」,通过一个坐标计算这个坐标附近其他数据,按照距离排序,如何下手呢?...” 我们可以通过区域来过滤出有限「女神」坐标数据,再对矩形区域内数据进行全量距离计算再排序,这样计算量明显降低。 “如何划分矩形区域呢?...,如何查找这个经纬度为中心一定范围内其他用用户呢?...km ASC COUNT 10 ASC可以实现让「女神」信息按照这个距离自己经纬度由近到远排序。

1.3K20

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

背景打开美团,可以通过自身定位查看附近商品。打开社交软件,可以查看附近的人交友。打开滴滴,可以查看附近共享单车,那这些是如何实现?...latitude 表示纬度member 是为此经纬度起名字此命令支持一次添加一个或多个位置信息。...# 计算翠湖公园(a)到大观公园(b)距离,单位km127.0.0.1:6379> geodist km a b km"4.2587"计算翠湖公园(a)到大观公园(b)距离是4.25公里,跟地图比对...,结果基本吻合查询某位置内其他成员信息georadius给定经纬度为中心, 返回键包含位置元素当中, 与中心距离不超过给定最大距离所有位置元素。...WITHHASH: 52 位有符号整数形式, 返回位置元素经过原始 geohash 编码有序集合分值。 这个选项主要用于底层应用或者调试, 实际中作用并不大。COUNT 限定返回记录数。

30420

单模和多模光纤可以混用吗_多模光纤和单模光纤能混用吗

大家好,又见面了,我是你们朋友全栈君。 我们知道光纤和光模块都有单模和多模两种类型,那么我们可能在使用中会产生疑问,单模/多模光纤和单模/多模光模块如何配套使用?它们可以混用吗?...至200km;多模光模块传输距离可达5km。  ...答:单模光纤能够使光纤直接发射到中心,一般用于长距离数据传输;多模光纤中光信号通过多个通路传播,因此多模光纤常用于短距离数据传输中。  ...多模光纤最好和多模光模块一起使用,因为多模和单模转换器必须是相应波长和光收发功能才能实现光电转换,所以多模光纤能和单模光模块一起使用无法保障使用效果。   ...结论:  看完本文之后,关于单模/多模光纤和单模/多模光模块混用答案毫无疑问是否定,它们不能混用。

1.6K20

Forest plot(森林图) | Cox生存分析可视化

之前分享过绘制KM曲线R|生存分析(1),诺莫图展示COX结果Nomogram(诺莫图) | Logistic、Cox生存分析结果可视化,本文将简单介绍如何使用R-survminer包绘制Cox生存分析结果森林图...只需cox回归模型以及数据集即可完成森林图绘制,但是可以从以下几个方面去优化COX结果森林图: A:森林图标题 B:调整前三列距离,防止过宽或过窄(重叠) C:字体大小以及HR小数位数 D:变量名称调整...更重要用途是当分类变量使用1,2... n数值表示时候,在图中不会给出分类比较变量名称,因此需要数值标志分类变量进行因子转换,然后再绘制。...model <- coxph( Surv(time, status) ~ age + gender + grade , data = LIHC ) ggforest(model, #coxph得到...◆ ◆ ◆ ◆ ◆ COX生存模型可以绘制森林图,那logist回归结果可以绘制吗?答案当然是肯定,后面见!?

2.5K21
领券