05_bitmaphyperloglogGEO

Bitmap&hyperloglog&GEO

面试问

  1. 记录对集合中的数据进行统计
  2. 在移动应用中,需要统计每天的新增用户数和第2天的留存用户数;
  3. 在电商网站的商品评论中,需要统计评论列表中的最新评论:
  4. 在签到打卡中,需要统计一个月内连续打卡的用户数:
  5. 在网页访问记录中,需要统计独立访客(Unique Visitor,UV)量。

痛点:

类似今日头条、抖音、淘宝这样的额用户访问级别都是亿级的,请问如何处理?

需求痛点

  1. 亿级数据的收集、清洗、统计、展现
  2. 需要:存的进、取得快、多维度

一、统计的类型有哪些

  1. 聚合统计

    统计多个集合元素的聚合结果,就是set里面的交差并等集合统计

    image-20230310202435718

    交并差集和聚合函数的应用

  2. 排序统计

    抖音短视频最新评论留言的场景,请你涉及一个展现列表。考察数据结构和设计思路。

    image-20230310202753893

    使用zset实现

    image-20230310203037036

    在面对需要展示最新列表、排行榜等场景时,如果数据更新频繁或者需要分页显示,建议使用zset

  3. 二值统计

    集合元素的取值就只有0和1两种。在钉钉上班签到打卡的场景中,我们只需要记录签到(1)和没签到(0)

    一般使用bitmap实现

  4. 基数统计

    指统计一个集合中不重复的元素

    一般使用hyperloglog

二、hyperloglog

  1. 名词

    1. UV

      Unique Visitor,独立访客,一般理解为客户端IP

      需要考虑去重

    2. PV

      Page View,页面浏览量

      不用去重

    3. DAU

      Daily Active User,日活跃用户量,登录或使用某个产品的用户数(去掉重复登录的用户)

      常用于反映网站、互联网应用或网络游戏的运营情况

    4. MAU

      Monthly Active User,月活跃用户量

  2. 需求

    很多计数类场景,比如每日注册IP数、每日访问IP数、页面实时访问数PV、访问用户数UV等。

    因为主要的目标高效、巨量地进行计数,所以对存储的数据的内容并不太关心。

    也就是说它只能用于统计巨量数量,不太涉及具体的统计对象的内容和精准性。

    统计单日一个页面的访问量(PV),单次访问就算一次。

    统计单日一个页面的用户访问量(UV),即按照用户为维度计算,单个用户一天内多次访问也只算一次。

    多个ky的合并统计,某个门户网站的所有模块的PV聚合统计就是整个网站的总PV。

  3. 是什么

    1. 基数

      是一种数据集,去重复后的真实个数

      image-20230310205505716

    2. 去重复统计功能的基数估计算法,就是hyperloglog

      image-20230310205545928

    3. 基数统计

      用于统计一个集合中不重复的元素个数,就是对集合去重复后剩余元素的计算

    4. 基本命令

      image-20230310205744231

  4. hyperloglog如何实现的,如何演化的

    1. 去重的几种方法

      • hashset

      • bitmap

        image-20230310210406452

      • hyperloglog概率算法

        通过牺牲准确率来换取空间,对于不要求绝对准确率的场景下可以使用,因为概率算法不直接存储数据本身,

        通过一定的概率统计方法预估基数值,同时保证误差在一定范围内,由于又不储存数据故此可以大大节约内存。

    2. 如何做到的?如何演化来的

      只是进行不重复的基数统计,不是集合也不保存数据,只记录数量而不是具体的内容。

      有误差:

      ​ hyperloglog提供不精确的去重计数方案,牺牲准确率来换取空间,误差在0.81%左右

      论文和出处:http://antirez.com/news/75

      image-20230310211215500

    3. 淘宝网站首页亿级UV的Redis统计方案

      1. 需求

        1. UV的统计需要去重,一个用户一天内的多次访问只能算一次
        2. 淘宝、天猫首页的UV,平均每天是1~1.5个亿左右
        3. 每天存1.5个亿的IP,访问者来了后先去查是否存在,不存在加入
      2. 方案

        1. 使用redis hash存储详细数据

        2. 使用hyperloglog

          image-20230310212656426

      3. hyperloglog service

      4. hyperloglog controller

三、GEO

面试题说明:

移动互联网时代LBS应越来越多,交友软件中附近的小姐姐、外卖软件中附近的美食店铺、打车软件附近的车辆等等。

那这种附近各种形形色色的XXX地址位置选择是如何实现的?

会有什么问题呢?

  1. 查询性能问题,如果并发高,数据量大这种查询是要搞垮mysq数据库的
  2. 一般mysql查询的是一个平面矩形访问,而叫车服务要以我为中心N公里为半径的圆形覆盖。
  3. 精准度的问题,我们知道地球不是平面坐标系,而是一个圆球,这种矩形计算在长距离计算时会有很大误差,mysql不合适

3.1 redis之GEO

经纬度:

image-20230310215853543

如何获取某个地址的经纬度:使用百度地图等系统

命令复习:

  1. GEOADD:添加经纬度坐标

  2. GEOPOS:返回经纬度

  3. GEOHASH:返回坐标的geohash,geohash算法生成的base32编码值

    image-20230310220254284

  4. GEODIST:两个位置之间距离

  5. GEORADIUS:查找距离中心位置小于XX距离的地点

  6. GEORADIUSBYMEMBER

四、bitmap

  1. 命令复习

    image-20230313214956303

  2. 需求和解决方案

    image-20230313215057654

  3. bitmap解决方法

    image-20230313215140676

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/43221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python “贪吃蛇”游戏,在不断改进中学习pygame编程

目录 前言 改进过程一 增加提示信息 原版帮助摘要 pygame.draw pygame.font class Rect class Surface 改进过程二 增加显示得分 改进过程三 增加背景景乐 增加提示音效 音乐切换 静音切换 mixer.music.play 注意事项 原版帮助摘要 pygame.mixer pygame.mix…

HTML详解连载(7)

HTML详解连载(7) 专栏链接 [link](http://t.csdn.cn/xF0H3)下面进行专栏介绍 开始喽结构伪类选择器作用 :nth-child(公式)作用举例 伪元素选择器作用注意: PxCoook作用盒子模型-重要组成部分 盒子模型-边框线属性名属性…

excel中定位条件,excel中有哪些数据类型、excel常见错误值、查找与替换

一、如何定位条件 操作步骤:开始 - 查找和选择 - 定位条件(ctrl G 或 F5) 注:如果F5不可用,可能是这个快捷键被占用了 案例:使用定位条件选择取余中空单元格,填入100,按组合键ct…

【LeetCode75】第三十三题 二叉树的最大深度

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 从这一题开始,LeetCode75进入到了二叉树章节。 这边建议不熟悉二叉树的小伙伴可以先去做做力扣的前序遍历,中序遍…

使用git rebase 之后的如何恢复到原始状态

我们常常喜欢使用git rebase去切换分支提交代码,操作流程就是: 先切换分支:比如当前是master 我们修改了一堆代码产生一个commit id :5555555567777 那么我们常常比较懒就直接切换了:git checkout dev 然后呢?使用命令git rebase 5555555567777,想把这笔修改提交到d…

iPhone上的个人热点丢失了怎么办?如何修复iPhone上不见的个人热点?

个人热点功能可将我们的iPhone手机转变为 Wi-Fi 热点,有了Wi-Fi 热点后就可以与附近的其他设备共享其互联网连接。 一般情况下,个人热点打开就可以使用,但也有部分用户在升级系统或越狱后发现 iPhone 的个人热点消失了。 iPhone上的个人热点…

antd5源码调试环境搭建(window系统)

将antd源码克隆至本地 $ git clone gitgithub.com:ant-design/ant-design.git $ cd ant-design $ npm install $ npm start前提安装python3、安装node版本18版本 不然后续安装依赖会报python3相关的错误。 项目需要使用git 初始化 不然会报husky相关的错误 git init重新安…

【论文解读】Hybrid-SORT: Weak Cues Matter for Online Multi-Object Tracking

因为Hybrid-SORT的baseline是基于OCSORT进行改进的,在这之前建议先了解byteTrack和【】的相关知识 1.介绍 1.1 基本框架 多目标跟踪(MOT)将问题分为两个子任务。第一个任务是检测每个帧中的对象。第二个任务是将它们在不同的框架中联系起来。关联任务主要通过显式…

RabbitMq-发布确认高级(避坑指南版)

在初学rabbitMq的时候,伙伴们肯定已经接触到了“发布确认”的概念,但是到了后期学习中,会接触到“springboot”中使用“发布确认”高级的概念。后者主要是解决什么问题呢?或者是什么样的场景引出这样的概念呢? 在生产环…

vscode | linux | c++ intelliense 被弃用解决方案

每日一句,vscode用的爽是爽,主要是可配置太强了。如果也很会研究,可以直接去咸鱼接单了 废话少说,直接整。 用着用着说是c intelliense被弃用,很多辅助功能无法使用,像查看定义、查看引用、函数跳转、智能提…

Nodejs沙箱逃逸--总结

一、沙箱逃逸概念 JavaScript和Nodejs之间有什么区别:JavaScript用在浏览器前端,后来将Chrome中的v8引擎单独拿出来为JavaScript单独开发了一个运行环境,因此JavaScript也可以作为一门后端语言,写在后端(服务端&#…

七夕特辑——3D爱心(可监听鼠标移动)

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

【005】ts学习笔记【函数扩展】

函数扩展 参数类型 //注意,参数不能多传,也不能少传 必须按照约定的类型来 const fn (name: string , age : number ) : string > {return name age }let desc fn( "张三", 18) console.log(desc)可选参数与默认值 //可选的参数 和 默…

@Repeatable的作用以及具体如何使用

文章目录 1. 前言2. 先说结论3. 案例演示 1. 前言 最近无意看到某些注解上有Repeatable,出于比较好奇,因此稍微研究并写下此文章。 2. 先说结论 Repeatable的作用:使被他注释的注解可以在同一个地方重复使用。 具体使用如下: T…

CentOS7源码安装MySQL详细教程

😊 作者: Eric 💖 主页: https://blog.csdn.net/weixin_47316183?typeblog 🎉 主题:CentOS7源码安装MySQL详细教程 ⏱️ 创作时间: 2023年08月014日 文章目录 1、安装的四种方式2、源码安装…

极智嘉x吉利汽车 x京东物流,引领汽车行业智慧物流新变革!

近日,中国领先的汽车制造商吉利汽车携手中国领先的技术驱动的供应链解决方案及物流服务商京东物流、全球仓储机器人引领者极智嘉(Geek),在西安吉利汽车制造基地RDC仓库率先落地SkyPick上存下拣解决方案,实现了全物流链精益化、智能化、一体化…

Spring-4-掌握Spring事务传播机制

今日目标 能够掌握Spring事务配置 Spring事务管理 1 Spring事务简介【重点】 1.1 Spring事务作用 事务作用:在数据层保障一系列的数据库操作同成功同失败 Spring事务作用:在数据层或业务层保障一系列的数据库操作同成功同失败 1.2 案例分析Spring…

STM32--TIM定时器(2)

文章目录 输出比较PWM输出比较通道参数计算舵机简介直流电机简介TB6612 PWM基本结构PWM驱动呼吸灯PWM驱动舵机PWM控制电机 输出比较 输出比较,简称OC(Output Compare)。 输出比较的原理是,当定时器计数值与比较值相等或者满足某种…

【数据结构OJ题】有效的括号

原题链接:https://leetcode.cn/problems/valid-parentheses/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 这道题目主要考查了栈的特性: 题目的意思主要是要做到3点匹配:类型、顺序、数量。 题目给的例子是比较…

【Hibench 】完成 HDP-Spark 性能测试

🍁 博主 "开着拖拉机回家"带您 Go to New World.✨🍁 🦄 个人主页——🎐开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 🎐✨🍁 🪁🍁 希望本文能够给您带来一定的…