Redis_億級訪問量數據處理

11. 億級訪問量數據處理

11.1 場景表述

  • 手機APP用戶登錄信息,一天用戶登錄ID或設備ID
  • 電商或者美團平臺,一個商品對應的評論
  • 文章對應的評論
  • APP上有打卡信息
  • 網站上訪問量統計
  • 統計新增用戶第二天還留存
  • 商品評論的排序
  • 月活統計
  • 統計獨立訪客(Unique Vistitor UV)量

11.2 集合的統計模式

四種統計模式:聚合統計、排序統計、二值狀態統計、基數統計

11.2.1 聚合統計

多個集合的交集、差集、并集
set集合,來存儲所有登錄系統的用戶 user:id
set集合,來存儲當日新增用戶信息 user:id :20211222
假設系統是2021年12月22日上線,統計當天用戶
sadd user:id :20211222 1001 1002 1003 1004 1005
統計總用戶量
sunionstore user:id user:id user:id :20211222
第2天12月23日上線用戶
sadd user:id :20211223 1001 1003 1006 1007
統計當日新增用戶
sdiffstore user:new user:id :20211223 user:id
統計第一天登錄,第二天還在的用戶
sinterstore user:save user:id :20211222 user:id :20211223
統計第一天登錄,第二天流失的用戶
sdiffstore user:rem user:id : 20211222 user:id :20211223

11.2.2排序統計

List、Set 、Hash 、ZSet四種集合中,List和Zset是屬于有序的集合
一種使用List,通過lpush加入
一種使用Zset,按分數權重處理

11.2.3 二值狀態統計

統計疫苗接種人數(沒有接種0 接種1)、打卡(沒有打卡0 打卡1)、簽到。
bit位 1byte=8bit
redis提供一種擴展數據類型 bitmap。

  • 常用命令
    • setbit
    • getbit
    • bitcount

統計一下,2023年1月前10天上班打卡情況 0為未打卡,1為打卡

setbit user:sign:202301 1
setbit user:sign:202301 1 0
setbit user:sign:202301 2 1
setbit user:sign:202301 3 0
...
setbit user:sign:202301 8 1
setbit user:sign:202301 9 0
getbit user:sign:202301 1 //0 獲取第二天是否打卡
bitcount user:sign:202301 //5 獲取打卡成功的天數
bitcount user:sign:202301 0 1 // 后面可以跟兩個參數 統計從第0個字節開始,到第1個字節結束的數據 第二個數據為-1時表示統計所有數據

bitmap表示的是字節位置存儲的對應的數據
其保存過程為:
在這里插入圖片描述
使用它進行統計大數據時極度節省內存

  • 存儲1億用戶一天信息約使用12m的內存
  • 但使用字符串保存時,1億用戶大概使用800M內存

假如有一個場景是需要3天當中都簽到的用戶,就是對bitmap進行與運算
bitop and signmap user:sign:1201 user:sign:1202 user:sign:1203
使用以上命令把三天同時登錄的用戶都存入到signmap數組當中
在這里插入圖片描述

11.2.4 基數統計

統計一個集合中不重復的元素個數,例如統計網頁的UV

  • 第一種,使用set或者hash來完成統計
    • sadd page1:uv u1001 u1002 u1003
    • scard page1:uv

存在的問題:如果數據量非常大,且頁面多,訪問人數非常多,造成內存緊張

  • 第二種,Redis提供了HyperLogLog(hll)

    • HyperLogLog是用于統計基數的一種數據集合類型。優點在于當集合元素非常多,使用hll所需要的空間是固定且很小,使用12kb內存,可以存儲2^64個元素的基數。缺點在于統計規則是基于概率完成的。會有0.81%左右的誤差。如果統計1000萬次,實際上可以是1100萬 或900萬人。
  • 命令

    • pfadd page1:uv u1001 u1002 u1003 添加數據
    • pfcount page1:uv 統計數據
    • pfadd page2:uv u1001 u1004 添加數據
    • pfmerge page:uv page1:uv page2:uv 合并數據
    • pfcount page:uv 統計數據

11.2.5小結

數據類型聚合統計排序統計二值狀態統計基數統計
set支持差集、交集、并集不支持不支持支持精確統計,數據量大時占用內存較大
zset支持差集、交集、并集支持不支持支持精確統計,數據量大時占用內存較大
hash不支持不支持不支持支持精確統計,數據量大時占用內存較大
list不支持支持不支持不支持
bitmap與、或、異或運算不支持支持支持精確統計,數據量大時占用內存較大
hyperloglog不支持不支持不支持支持,采用概率算法,大數據量時,節省內存,但不精確

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38270.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38270.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38270.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【BEV】3D視覺 PRELIMINARY

這里的知識來自于論文 Delving into the Devils of Bird’s-eye-view Perception: A Review, Evaluation and Recipe 的 Appendix B.1 部分來自 這篇文章 從透視圖轉向鳥瞰圖。(Xw、Yw、Zw)、(Xc、Yc、Zc)表示世界World坐標和相…

Android學習之路(4) UI控件之Button (按鈕)與 ImageButton (圖像按鈕)

本節引言: 今天給大家介紹的Android基本控件中的兩個按鈕控件,Button普通按鈕和ImageButton圖像按鈕; 其實ImageButton和Button的用法基本類似,至于與圖片相關的則和后面ImageView相同,所以本節 只對Button進行講解&am…

vue自定義穿梭框支持遠程滾動加載

分享-2023年資深前端進階:前端登頂之巔-最全面的前端知識點梳理總結,前端之巔 *分享一個使用比較久的🪜 技術框架公司的選型(老項目):vue2 iview-ui 方案的實現思路是共性的,展現UI樣式需要你們自定義進行更改&#…

【注解使用】使用@Autowired后提示:Field injection is not recommended(Spring團隊不推薦使用Field注入)

問題發生場景: 在使用 IDEA 開發 SpringBoot 項目時,在 Controller 類中使用注解 Autowired 注入一個依賴出現了警告提示,查看其他使用該注解的地方同樣出現了警告提示。這是怎么回事?由于先去使用了SpringBoot并沒有對Spring進行…

分布式 - 消息隊列Kafka:Kafka消費者和消費者組

文章目錄 1. Kafka 消費者是什么?2. Kafka 消費者組的概念?3. Kafka 消費者和消費者組有什么關系?4. Kafka 多個消費者如何同時消費一個分區? 1. Kafka 消費者是什么? 消費者負責訂閱Kafka中的主題,并且從…

【數據結構OJ題】反轉鏈表

原題鏈接:https://leetcode.cn/problems/reverse-linked-list/description/ 目錄 1. 題目描述 2. 思路分析 3. 代碼實現 1. 題目描述 2. 思路分析 方法一:三指針翻轉法 使用三個結構體指針n1,n2,n3,原地修改結點…

VSCode如何設置高亮

一、概述 本文主要介紹在 VSCode 看代碼時,怎樣使某個單詞高亮顯示,主要通過以下三步實現: 安裝 highlight-words 插件 配置 highlight-words 插件 設置高亮快捷鍵F8 工作是嵌入式開發的,代碼主要是C/C的,之前一直用…

【Linux】高級IO

目錄 IO的基本概念 釣魚五人組 五種IO模型 高級IO重要概念 同步通信 VS 異步通信 阻塞 VS 非阻塞 其他高級IO 阻塞IO 非阻塞IO IO的基本概念 什么是IO? I/O(input/output)也就是輸入和輸出,在著名的馮諾依曼體系結構當中…

ROS學習筆記(三)---好用的終端Terminator

ROS學習筆記文章目錄 01. ROS學習筆記(一)—Linux安裝VScode 02. ROS學習筆記(二)—使用 VScode 開發 ROS 的Python程序(簡例) 一、Terminator是什么? 在前面的學習中,為了運行hello.py我是在vscode頻繁的點擊運行窗口的“”號…

智谷星圖趙俊:讓人才和區塊鏈產業“雙向奔赴”丨對話MVP

區塊鏈產業需要什么樣的人才?趙俊很有發言權。 趙俊是北京智谷星圖科技有限公司的技術總監,也是FISCO BCOS官方認證講師。他2017年接觸區塊鏈,隨后選擇人才培育領域深耕。“為區塊鏈行業引進更多人才這件事很有價值,跟我的職業理…

菜單和內容滾動的聯動原理及代碼

之前寫代碼有個需求:左側是一個菜單,右邊是內容,點擊左側菜單右邊內容滾動到對應位置,右邊內容滾動到某位置時,左側菜單也會選中對應的菜單項。UI如下:這是大多網站的移動端都會有的需求。 解決方案一&…

高憶管理:什么是一碼通?有什么好處?

在經過券商開戶后,除了其間的財物賬戶、滬深股賬戶外,還有一個一碼通賬戶,什么是一碼通?它有什么好處?關于這些,高憶管理為大家預備了以下參閱內容。 什么是一碼通? 一碼通賬戶,一般…

CSDN編程題-每日一練(2023-08-15)

CSDN編程題-每日一練(2023-08-15) 一、題目名稱:新型美麗數列二、題目名稱:會議安排三、題目名稱:小豚鼠搬家一、題目名稱:新型美麗數列 時間限制:1000ms內存限制:256M 題目描述: 定義美麗數列A: 1. 數列中相鄰的數越是靠內相對大小加一,a[2]=a[1]+1,a[n-2]=a[n-1]+1…

【C語言】小游戲-掃雷(清屏+遞歸展開+標記)

大家好&#xff0c;我是深魚~ 目錄 一、游戲介紹 二、文件分裝 三、代碼實現步驟 1.制作簡易游戲菜單 2. 初始化棋盤(11*11) 3.打印棋盤(9*9) 4.布置雷 5.計算(x,y)周圍8個坐標的和 6.排查雷 <1>清屏后打印棋盤 <2>遞歸展開 <3>標記雷 四、完整代…

視頻監控有哪些存儲方式?安防監控應該如何選擇存儲模式?

視頻監控系統涉及到大量的視頻數據&#xff0c;需要對這些數據進行存儲&#xff0c;以備日后查看或備份。視頻監控的存儲需求需要根據場所的實際情況進行選擇&#xff0c;以保證監控數據的有效存儲和日后的調閱、回溯。 當前視頻監控的存儲方式&#xff0c;通常有以下幾種&…

Golang協程,通道詳解

進程、線程以及并行、并發 關于進程和線程 進程&#xff08;Process&#xff09;就是程序在操作系統中的一次執行過程&#xff0c;是系統進行資源分配和調度的基 本單位&#xff0c;進程是一個動態概念&#xff0c;是程序在執行過程中分配和管理資源的基本單位&#xff0c;每…

【BASH】回顧與知識點梳理(二十三)

【BASH】回顧與知識點梳理 二十三 二十三. Linux 賬號管理&#xff08;二&#xff09;23.1 賬號管理新增與移除使用者&#xff1a; useradd, 相關配置文件, passwd, usermod, userdelusermoduserdel 23.2 用戶功能&#xff08;普通用戶可使用&#xff09;idfingerchfnchsh 23.3…

【數據庫系統】--【2】DBMS架構

DBMS架構 01DBMS架構概述02 DBMS的物理架構03 DBMS的運行和數據架構DBMS的運行架構DBMS的數據架構PostgreSQL的體系結構RMDB的運行架構 04DBMS的邏輯和開發架構DBMS的層次結構DBMS的開發架構DBMS的代碼架構 05小結 01DBMS架構概述 02 DBMS的物理架構 數據庫系統的體系結構 數據…

騰訊Perfdog支持Windows PC端體驗性能測試

一、背景 最近在做抖音的小玩法&#xff0c;其基于unity引擎&#xff0c;然后掛載到直播伴侶。以及Perfdog近期也支持了Windows的測試&#xff0c;所以做一個體驗測試。 二、如何做 查看PC端的支持&#xff0c;目前是beat版本 選擇或搜索自己需要的對應的程序&#xff0c;如…

python實現文本相似度排名計算

項目中&#xff0c;客戶突然提出需要根據一份企業名單查找對應的內部系統用戶信息&#xff0c;然后根據直接的企業社會統一信用號和企業名稱進行匹配&#xff0c;發現匹配率只有2.86%&#xff0c;低得可憐。所以根據客戶的要求&#xff0c;需要將匹配率提高到70-80%左右&#x…