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的场景时,应考虑数据的更新频率和集合的数量,以确保性能和准确性。
目录
相关文章
|
监控 Java 关系型数据库
基于Docker搭建Zabbix
这篇文章介绍了如何使用Docker来搭建Zabbix监控系统。Zabbix是一个开源的网络监控工具,可以监控服务器、网络设备等各种资源的状态和性能。而Docker是一种容器技术,可以方便地打包应用程序及其依赖环境,使得应用的部署和管理更加简单和可靠。
|
Java 数据库连接 数据库
Spring Boot 中的事务管理
Spring Boot 中的事务管理
geojson格式筛选及处理的解决方案
geojson格式筛选及处理的解决方案
378 0
|
JavaScript
Vue中 使用 moment.js 计算时间差值
Vue中 使用 moment.js 计算时间差值
1227 0
Vue中 使用 moment.js 计算时间差值
|
5月前
|
数据可视化 Apache 开发者
趣码乐园 Apache ECharts 6.0 功能介绍
作为一种布局,它还允许开发者将各种图表类型和组件结合,创造出灵活复杂的可视化作品:
|
9月前
|
JSON JavaScript 前端开发
shpfile转GeoJSON;控制shp转GeoJSON的精度;如何获取GeoJSON;GeoJSON是什么有什么用;GeoJSON结构详解(带数据示例)
在使用Openlayers、leaflet、mapbox等地图控件的时候,GeoJSON几乎是不可避免打交道的数据类型,如果您想要从事gis行业相关的开发工作,本篇文章应该能为您带来一些帮助。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
9月前
|
人工智能 供应链 搜索推荐
2025年中国快消品企业CRM选型指南
本文围绕2025年中国快消品企业CRM选型展开。快消行业数字化转型加速,CRM至关重要,但企业转型面临诸多困境。文章提出CRM选型的常规标准,并对比纷享销客、用友、勤策等五家主流服务商。
|
网络协议 网络安全 PHP
使用天猫精灵实现计算机WOL网络唤醒
解决笔记本连显示器不想掀盖子开机和远程办公时给公司电脑开机不方便的痛点。
15394 8
使用天猫精灵实现计算机WOL网络唤醒
|
atlas
Cesium导入geojson数据
这篇文章详细描述了如何在Cesium中导入GeoJSON数据来绘制地理矢量数据,并提供了实现的具体方法和示例代码。
558 2
Cesium导入geojson数据
|
安全 Java Linux
如何确定 Broken Pipe 异常是由网络问题还是其他原因引起的
Broken Pipe 异常可能由网络问题或其他原因引起。要确定具体原因,可以检查网络连接状态、防火墙设置和系统日志,同时分析异常发生时的上下文信息。
1537 5