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

Redis系统学习之三种特殊数据类型(geospatial(地理位置))

计算两个位置之间距离(直线距离[笑哭,谁会查直线距离]) geodist key 位置1 位置2 [m|km|ft|mi](单位) m :米,默认单位。 km :千米。 mi :英里。...计算河北北京之间距离,单位千米 ?...指定纬度中心,找出某一半径内元素 GEORADIUS key 维度 经度 半径长度 m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count...上面的georadius一样 只不过是把经纬度换成了已存在地理位置名称 m :米,默认单位。 km :千米。 mi :英里。 ft :英尺。...使用场景 计算两地之间直线距离 存储地理位置 实现位置附近人功能 作者:彼岸舞 时间:2021\05\05 内容关于:Redis 本文属于作者原创,未经允许,禁止转发

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

Redis之GEO类型解读

使用 Redis GEO 可以高效地处理大量地理位置数据 基本命令  geoadd 将指定地理空间位置(纬度经度、名称)添加到指定key。...geopos 从key里返回所有给定位置元素位置(经度纬度) geodist 返回两个给定位置之间距离 georadius 给定纬度中心, 找出某一半径内元素 georadiusbymember...指定单位参数 unit 必须是以下单位其中一个: m 表示单位米。 km 表示单位千米。 mi 表示单位英里。 ft 表示单位英尺。...如果给定位置元素不存在, 那么命令返回空值。 georadius 命令 给定纬度中心, 返回键包含位置元素当中, 与中心距离不超过给定最大距离所有位置元素。...范围可以使用以下其中一个单位: m 表示单位米。 km 表示单位千米。 mi 表示单位英里。 ft 表示单位英尺。

25640

Redis之GEO类型解读

使用 Redis GEO 可以高效地处理大量地理位置数据 基本命令 geoadd 将指定地理空间位置(纬度经度、名称)添加到指定key。...geopos 从key里返回所有给定位置元素位置(经度纬度) geodist 返回两个给定位置之间距离 georadius 给定纬度中心, 找出某一半径内元素 georadiusbymember...指定单位参数 unit 必须是以下单位其中一个: m 表示单位米。 km 表示单位千米。 mi 表示单位英里。 ft 表示单位英尺。...如果给定位置元素不存在, 那么命令返回空值。 georadius 命令 给定纬度中心, 返回键包含位置元素当中, 与中心距离不超过给定最大距离所有位置元素。...范围可以使用以下其中一个单位: m 表示单位米。 km 表示单位千米。 mi 表示单位英里。 ft 表示单位英尺。

408110

redis 学习(15)-- GEO

GEO GEO 简介 Redis 3.2添加新特性 功能:存储经纬度计算两地距离、范围计算等 基于ZSet实现 删除操作使用 zrem key member GEO 相关命令 1.geoadd key...unit取值范围 m(米) km(千米) mi(英里) ft(英尺) withcoord:将位置元素经度纬度也一并返回 withdist:在返回位置元素同时,将距离也一并返回。...距离单位用户给定范围单位保持一致 withhash:52位符号整数形式,返回位置元素经过geohash编码有序集合分值。用于底层应用或调试,实际作用不大。...unit取值范围 m(米) km(千米) mi(英里) ft(英尺) withcoord:将位置元素经度纬度也一并返回 withdist:在返回位置元素同时,将距离也一并返回。...距离单位用户给定范围单位保持一致 withhash:52位符号整数形式,返回位置元素经过geohash编码有序集合分值。用于底层应用或调试,实际作用不大。

44750

Redis实现附近的人

key member1 member2 [unit] , 其中 unit 单位 m|km|ft(英尺)|mi(英里) # 计算两点间距离,返回距离单位是米(m) 127.0.0.1:0>GEODIST...范围可以使用以下其中一个单位: m 表示单位米 km 表示单位千米 mi 表示单位英里 ft 表示单位英尺 在给定以下可选项时, 命令会返回额外信息: WITHDIST: 在返回位置元素同时...距离单位用户给定范围单位保持一致 WITHCOORD: 将位置元素经度维度也一并返回 WITHHASH: 52 位有符号整数形式, 返回位置元素经过原始 geohash 编码有序集合分值...GEORADIUS 使用输入经度纬度来决定中心点 指定成员位置被用作查询中心 ?...工作原理 sorted set 使用一种称为 Geohash 技术进行填充。经度纬度位是交错形成一个独特 52 位整数.

71320

geohash之2d 地理空间索引

有关查询存储在地理空间索引数据信息,请参阅使用2d索引查询地空间。 存储位置数据使用2d地理空间索引,您必须在预定二维坐标系(例如经度纬度)上对位置数据建模。...考虑以下两个例子: loc : [ x, y ] loc : { x: 1, y: 2 } 所有文件必须相同顺序存储位置数据。如果您将纬度经度用作坐标系,请始终先存储经度。...2d索引默认范围经度纬度,并使用边界值-180(含180)180(不含)。 重要 2d索引默认边界允许应用程序插入无效纬度大于90或小于-90文档。...Haystack Haystack索引为来自同一地理区域文档创建“桶”,提高限于该区域查询性能。 干草堆索引每个桶都包含指定接近给定经度纬度所有文档。...MongoDB还支持使用球面几何距离计算提供基于球体或地球地理空间信息准确距离

2.2K40

redis | 九、redis之Geospatial

sorted set使用一种称为Geohash技术进行填充。经度纬度位是交错形成一个独特52位整数....指定单位参数 unit 必须是以下单位其中一个: m 表示单位米。 km 表示单位千米。 mi 表示单位英里。 ft 表示单位英尺。...如果用户没有显式地指定单位参数, 那么 GEODIST 默认使用米作为单位。 GEODIST 命令在计算距离时会假设地球完美的球形, 在极限情况下, 这一假设最大会造成 0.5% 误差。...范围可以使用以下其中一个单位: m 表示单位米。 km 表示单位千米。 mi 表示单位英里。 ft 表示单位英尺。...给定纬度中心, 找出某一半径内元素 Redis GEOADD 命令 将指定地理空间位置(纬度经度、名称)添加到指定key Redis GEORADIUSBYMEMBER 命令 找出位于指定范围内元素

63220

Redis GEO地理位置

这些数据有序集合形式被储存在键里面, 从而使得像 GEORADIUS GEORADIUSBYMEMBER 这样命令可以在之后通过位置查询取得这些元素。...从键里面返回所有给定位置元素位置(经度纬度)。 GEOPOS 命令返回一个数组, 数组每个项都由两个元素组成: 第一个元素给定位置元素经度, 而第二个元素则为给定位置元素纬度。...指定单位参数 unit 必须是以下单位其中一个: m 表示单位米。 km 表示单位千米。 mi 表示单位英里。 ft 表示单位英尺。...如果用户没有显式地指定单位参数, 那么 GEODIST 默认使用米作为单位。 GEODIST 命令在计算距离时会假设地球完美的球形, 在极限情况下, 这一假设最大会造成 0.5% 误差。...km 表示单位千米。 mi 表示单位英里。 ft 表示单位英尺。

1.7K40

Redis三种特殊类型

Redis三种特殊数据类型 geospatial 地理位置 朋友定位, 附近的人, 打车距离计算 RedisGeo在Redis3.2版本就推出了.这个功能可以推算地理位置信息, 两地之间距离...如果两个位置之间其中一个不存在, 那么命令返回空值。 指定单位参数 unit 必须是以下单位其中一个: m 表示单位米。 km 表示单位千米。 mi 表示单位英里。...)通过半径来查询 给定纬度中心, 返回键包含位置元素当中, 与中心距离不超过给定最大距离所有位置元素。范围可以使用以下其中一个单位: m 表示单位米。 km 表示单位千米。...mi 表示单位英里。 ft 表示单位英尺。...Bitmaps 位图 数据结构 都是操作二进制位 来进行记录 就只有 0 1 两个状态 测试 使用bitmap来记录周一到周日打卡 周一 1 周二 0 周三 1 周四 0 周五 1

60520

⑦【Redis GEO 】Redis常用数据类型:GEO

geopos用于从指定key返回所有指定位置名称经度纬度,不存在返回nil geopos key member [member ...] geopos city 广州 # 获取空间名称“广州”...给定纬度中心, 返回键包含位置元素当中, 与中心距离不超过给定最大距离所有位置元素。...距离单位用户给定范围单位保持一致。 WITHCOORD : 将位置元素经度维度也一并返回。...# 键:city # 经度纬度:121.48941010236740112 31.40526993848380499 # 纬度中心,向外扩张最大距离:2000 # 单位:km # withcoord...距离单位用户给定范围单位保持一致。 WITHCOORD : 将位置元素经度维度也一并返回。

25110

redis常用命令和数据类型

语法: geoadd key 经度 纬度 地名 经度 纬度 地名 ... ... 2、geopos:获取地理位置坐标(经度纬度) geopos key 地名 3、geodist:计算两个位置之间距离...单位可以是:m、km、mi(英里)、ft(英尺) geodist key 地名1 地名2 单位 4、georadius:根据用户给定纬度坐标来获取指定范围内地理位置集合。...georadius 给定纬度中心, 返回键包含位置元素当中, 与中心距离不超过给定最大距离所有位置元素 georadius key 经度 纬度 半径值 单位 [WITHCOORD] [WITHDIST...WITHCOORD: 将位置元素经度纬度也一并返回。 WITHHASH: 52 位有符号整数形式, 返回位置元素经过原始 geohash 编码有序集合分值。...georadiusbymember GEORADIUS 命令一样, 都可以找出位于指定范围内元素, 但是 georadiusbymember 中心点是由给定位置元素决定, 而不是使用经度纬度来决定中心点

87710

Redis3个高级数据结构

使用HLL时并不是真正添加项到HLL(这一点SETS结构差异很大),因为HLL数据结构只包含一个不包含实际元素状态,API是一样: PFADD命令用于添加一个新元素到统计。...(integer) 1 127.0.0.1:6380> PFMERGE hlls hll1 hll2 OK 127.0.0.1:6380> PFCOUNT hlls HLL数据结构一个使用场景就是计算用户每天在搜索执行唯一查询...这是它们用法不同。 GEO RedisGEO特性在 Redis3.2版本推出,这个功能可以将用户给定地理位置(经度纬度)信息储存起来,并对这些信息进行操作。...在极限情况下,这一假设最大会造成0.5%误差。 指定单位参数unit必须是以下单位其中一个: m 表示单位米(默认)。 km 表示单位千米。 mi 表示单位英里。 ft 表示单位英尺。...命令一样,都可以找出位于指定范围内元素,但是GEORADIUSBYMEMBER中心点是由给定位置元素决定,而不是像 GEORADIUS那样,使用输入经度纬度来决定中心点。

2.1K10

Redis命令详解:Geo

纬度经度、名称)添加到指定key。...这些数据将存储到sorted set,这样为了方便使用GEORADIUS或GEORADIUSBYMEMBER命令。 该命令采用标准格式参数x,y,所以经度必须在纬度之前。...指定单位参数unit必须是以下其中一个: m表示单位米 km表示单位千米 mi表示单位英里 ft表示单位英尺 如果用户没有显示指定单位参数,默认使用米作为单位。...GEODIST命令在计算距离时会假设地球完美球形,极限情况下,这一假设最大会造成0.5%误差。...命令额外选项: WITHDIST:在返回位置元素同时,将位置元素与中心距离也一并返回,单位与用户给定距离单位一直 WITHCOORD:将位置元素经度纬度也一并返回 WITHHASH:52位有符号整数形式

80820

Redis命令geoXXX

Redis Geo模块包含了以下6个命令: GEOADD: 将给定位置对象(纬度经度、名字)添加到指定key; GEOPOS: 从key里面返回所有给定位置对象位置(经度纬度); GEODIST...: 返回两个给定位置之间距离; GEOHASH: 返回一个或多个位置对象Geohash表示; GEORADIUS: 给定纬度中心,返回目标集合与中心距离不超过给定最大距离所有位置对象;...GEORADIUSBYMEMBER: 给定位置对象中心,返回与其距离不超过给定最大距离所有位置对象。...,其中最后一个参数不填表示单位米 m 米 km千米 mi英里 ft 英尺 127.0.0.1:6379> geodist mypos me lili "111226.3808" 127.0.0.1:6379...总结 redis优势就是各种数据结构更方便计算命令,熟练掌握redis各种命令,有利于我们优化我们代码提升系统吞吐量

49220

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

当用户点击 Near Me 功能时,那么通过后台就可以当前用户位置圆点,距离半径查询相关用户展示即可完成 GEO底层结构 设计一个数据类型底层结构时,首先要知道,待处理数据访问特点。...这就要用到GEO类型GeoHash编码。 工作原理 sorted set 使用一种称为 Geohash 技术进行填充。经度纬度位是交错形成一个独特 52 位整数....工作原理 sorted set 使用一种称为 Geohash 技术进行填充。经度纬度位是交错形成一个独特 52 位整数....key member1 member2 [unit] 其中 unit 单位 m|km|ft(英尺)|mi(英里) # 计算两点间距离,返回距离单位是米(m) 127.0.0.1:0>GEODIST...距离单位用户给定范围单位保持一致 WITHCOORD: 将位置元素经度维度也一并返回 WITHHASH: 52 位有符号整数形式, 返回位置元素经过原始 geohash 编码有序集合分值

1.2K20

根据经纬度、方向、距离求终点位置

假设方位角是α, 那从点1到点2平移距离分别如下所示d*sinα, d*cosα。 这里正北0度。基中点1经纬度(long1, lat1)距离d是已知。...极半径 从地心到北极或南极距离,大约3950英里(6356.9088千米)(两极差极小,可以忽略)。 赤道半径 是从地心到赤道距离,大约3963英里(6377.830千米)。...如果只是做近似计算,我们这里取平均距离,平均半径 大约3959英里(6371.393千米) 。这个数字是地心到地球表面所有各点距离平均值。...计算第二点经度,就是 水平平移距度(d*sinα)除以 当前纬度切面周长(2π*arc),再每乘以360度) ,就知道了水平横向平移了多少度,再加上long1,就是long2值了。  2....原因是弧度制统一了度量弧与半径单位,从而大大简化了有关公式及运算,尤其在物理、数学,其优点就格外明显。

53030

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

遍历数据自己对比,获得每个人和自己距离数据所有记录都遍历一遍,把每一条记录纬度自己纬度做个对比,就能获取到各个记录离自己距离。...如何根据两个经纬度,获取到这两个点之间距离我在网上找了个方法,大家可以参考下 /** * 求两个已知经纬度之间距离,单位米 * * @param lng1 $ ,lng2 经度 * @param...遍历完了之后还得继续计算距离,这个数量级也是非常大 距离那些都弄完了还得再筛选一遍在附近,又是一遍所有数据遍历 如果符合附近的人要求是需要按照距离从近到远来排序,又得遍历计算 上述方式如果用户量比较小其实是可以实现...user_1 user_2 这两个节点之间距离距离单位可以指定,如下所示 m :米,默认单位。...mi :英里。 ft :英尺。 WITHDIST: 在返回位置元素同时, 将位置元素与中心之间距离也一并返回。 WITHCOORD: 将位置元素经度维度也一并返回。

60310

如何在Redis快速推算两地之间距离?——Geo篇

Redis,作为一种高性能内存数据库,我们提供了这样解决方案。Redis 在 3.2 推出 Geo 类型,该功能可以推算出地理位置信息,两地之间距离。有效经度从 -180 度到 180 度。...每条记录包括经度纬度以及位置名称。你是否会好奇 geo 是通过什么类型在 Redis 存储?...,每个地点名称是有序集合成员,而其经纬度则用于计算分数,确保成员有序性。..." 2) "31.22999903975783553"geopos 命令用于获取一个或多个成员地理位置信息(经度纬度),这个命令返回上海纬度。...计算两城市间距离单位:m 表示单位米,也是默认单位。km 表示单位千米。mi 表示单位英里。ft 表示单位英尺。

4810

Redis 3 个高级数据结构

使用HLL时并不是真正添加项到HLL(这一点SETS结构差异很大),因为HLL数据结构只包含一个不包含实际元素状态,API是一样: PFADD命令用于添加一个新元素到统计。...3 4 5 (integer) 1 127.0.0.1:6380> PFMERGE hlls hll1 hll2 OK 127.0.0.1:6380> PFCOUNT hlls HLL数据结构一个使用场景就是计算用户每天在搜索执行唯一查询...这是它们用法不同。 GEO RedisGEO特性在 Redis3.2版本推出,这个功能可以将用户给定地理位置(经度纬度)信息储存起来,并对这些信息进行操作。...在极限情况下,这一假设最大会造成0.5%误差。 指定单位参数unit必须是以下单位其中一个: m 表示单位米(默认)。 km 表示单位千米。 mi 表示单位英里。...命令一样,都可以找出位于指定范围内元素,但是GEORADIUSBYMEMBER中心点是由给定位置元素决定,而不是像 GEORADIUS那样,使用输入经度纬度来决定中心点。

49820
领券