GEO类型

简介: 【10月更文挑战第9天】

用于存储地理位置信息,它允许用户进行各种基于地理位置的操作,如查询附近的位置、计算两个地点之间的距离等

用法:

  1. GEOADD key longitude latitude member:向key对应的GEO集合里添加带有经纬度的成员member。其中经纬度是浮点数
  2. GEOPOS key member [member...] :返回一个或多个成员的地理坐标
  3. GEODIST key member1 member2 [unit]:计算两个成员之间的距离。unit 是可选的距离单位参数,默认为米(m)
  4. GEOHASH key member [member ...] - 返回一个或多个成员的Geohash表示
  5. GEORADIUS key longitude latitude radius unit [WITHCOORD] [WITHDIST] [WITHHASH] - 查询给定位置周围指定半径内的所有成员
GEORADIUS myGeoSet 116.407526 39.904030 500 km WITHCOORD WITHDIST WITHHASH

业务场景
唯一用户访问统计
非常适合用来统计一段时间内访问网站或应用的唯一用户数量

背景:在新闻门户网站,需要统计每天访问的唯一用户数量,以此评估用户基础和内容的吸引力

优点:

  1. 空间占用小
  2. 提供近似但是非常准确的基数估计
  3. 高并发情况下也有高性能
当你使用 <font style="background-color:rgba(255, 255, 255, 0);">PFADD</font> 命令向 HyperLogLog 添加一个元素时,Redis 会内部处理这个元素,并更新 HyperLogLog 的状态。如果该元素是第一次被添加到 HyperLogLog 中,它会改变 HyperLogLog 的计数;如果该元素已经存在于 HyperLogLog 中,Redis 会识别出来,并且不会重复计数。

事件独立性分析

可以用于分析不同事件的独立性,例如不同来源的点击事件是否来自相同的用户群体

具体案例:

在广告平台分析不同广告来源的点击事件是否由相同的用户群体产生

优点:

  1. 多集合统计:可以独立统计不同事件的基数
  2. 合并分析
// 记录点击事件
func recordClickEvent(clickID string, sourceID string) {
   
    sourceSetKey := "clicks:" + sourceID
    // 向对应来源的HyperLogLog中添加点击ID
    rdb.PFAdd(ctx, sourceSetKey, clickID)
}
// 合并点击事件集合并分析用户群体独立性
func analyzeAudienceIndependence(sourceIDs []string) int64 {
   
    destKey := "mergedClicks"
    // 合并所有来源的HyperLogLog集合
    rdb.PFMerge(ctx, destKey, sourceIDs)
    // 计算合并后的基数
    count, _ := rdb.PFCount(ctx, destKey).Result()
    return count
}

注意事项:

  • 提供的是近似值,对于大多数场景来说足够准确
  • 不适合于精确计数或小规模数据集的统计
  • 可以安全的把多个HyperLogLog集合合并,合并操作不会增加内存使用量,并且结果是一个更准确的基数估计
  • 在设计使用HyperLogLog的场景时,应考虑数据的更新频率和集合的数量,以确保性能和准确性。
目录
相关文章
|
8月前
|
存储 DataWorks 监控
DataWoks如何接入ST_Geometry类型的数据?
DataWoks如何接入ST_Geometry类型的数据?
59 4
|
存储 JSON 算法
Json字段选取器介绍和实现
我这个工具采用很简单的语法来标识目标json的层级结构,以及每一层中你想要的字段。语法类似yaml的层级结果,用相同的缩减标识同一层,每一层的关键词是你想要的字段key,不区分大小写,为了更方便使用,也支持正则表达式。 当然这里有几个特殊规则
105 0
Json字段选取器介绍和实现
geojson格式筛选及处理的解决方案
geojson格式筛选及处理的解决方案
241 0
|
定位技术
百度地图拾取经纬度转为标准GEOJSON格式的函数解决方案
百度地图拾取经纬度转为标准GEOJSON格式的函数解决方案
267 0
|
JavaScript 前端开发 关系型数据库
GIS开发:GeoJSON坐标和WKT的转换
GIS开发:GeoJSON坐标和WKT的转换
758 0
|
3月前
|
atlas
Cesium导入geojson数据
这篇文章详细描述了如何在Cesium中导入GeoJSON数据来绘制地理矢量数据,并提供了实现的具体方法和示例代码。
113 1
Cesium导入geojson数据
|
6月前
|
存储 数据可视化 数据处理
`geopandas`是一个开源项目,它为Python提供了地理空间数据处理的能力。它基于`pandas`库,并扩展了其对地理空间数据(如点、线、多边形等)的支持。`GeoDataFrame`是`geopandas`中的核心数据结构,它类似于`pandas`的`DataFrame`,但包含了一个额外的地理列(通常是`geometry`列),用于存储地理空间数据。
`geopandas`是一个开源项目,它为Python提供了地理空间数据处理的能力。它基于`pandas`库,并扩展了其对地理空间数据(如点、线、多边形等)的支持。`GeoDataFrame`是`geopandas`中的核心数据结构,它类似于`pandas`的`DataFrame`,但包含了一个额外的地理列(通常是`geometry`列),用于存储地理空间数据。
|
NoSQL 定位技术 Redis
Redis学习笔记-GEO经纬度编码原理&地理划分
Redis学习笔记-GEO经纬度编码原理&地理划分
264 1
|
存储 NoSQL 定位技术
Redis之GEO类型解读
Redis之GEO类型解读
|
JSON JavaScript 前端开发
JSON数据类型
JSON 是 Web 开发中使用最广泛的数据交换格式,它独立于编程语言,能够被大多数编程语言使用。本节我们来详细介绍一下 JSON 中支持的数据类型。

热门文章

最新文章