Redis基礎教程(十):HyperLogLog

💝💝💝首先,歡迎各位來到我的博客,很高興能夠在這里和您見面!希望您在這里不僅可以有所收獲,同時也能感受到一份輕松歡樂的氛圍,祝你生活愉快!
💝💝💝如有需要請大家訂閱我的專欄【Redis系列】喲!我會定期更新相關系列的文章
💝💝💝關注!關注!!請關注!!!請大家關注下博主,您的支持是我不斷創作的最大動力!!!

文章目錄

    • 引言
    • 一、HyperLogLog 工作原理
    • 二、Redis HyperLogLog 命令
    • 三、實戰案例
      • 場景:網站獨立訪客計數
        • 步驟1:初始化 HyperLogLog
        • 步驟2:添加訪客到 HyperLogLog
        • 步驟3:獲取獨立訪客數的近似計數
      • 場景:多源數據的合并計數
        • 步驟1:初始化 HyperLogLog 并添加數據
        • 步驟2:合并多個 HyperLogLog
        • 步驟3:獲取合并后的唯一元素計數
    • 四、總結

引言

在大數據處理中,精確計數唯一元素(如網站的獨立訪客數、用戶行為分析中的唯一操作次數等)常常會面臨存儲和性能的雙重挑戰。傳統的計數方法,如使用集合(Set)存儲每個唯一元素,雖然能提供精確的結果,但在處理海量數據時會消耗大量的內存資源。這時,HyperLogLog 算法便展現出了其獨特的優勢。Redis 自版本 2.8.9 起,引入了 HyperLogLog 數據結構,為近似計數唯一元素提供了高效且節省內存的解決方案。本文將深入探討 Redis HyperLogLog 的工作原理、使用方法及實戰案例,幫助你理解并掌握這一強大的數據結構。

一、HyperLogLog 工作原理

HyperLogLog 是一種概率數據結構,它通過統計學方法對數據進行采樣和估算,以極低的內存消耗實現對大規模數據集中唯一元素的近似計數。HyperLogLog 的核心思想是利用哈希函數的特性,對輸入數據進行哈希轉換后,觀察哈希值中連續零的最長序列長度,以此來估計數據集中不同元素的數量。具體而言,HyperLogLog 分配了一系列的寄存器,每個寄存器存儲著觀察到的最長零序列的長度。通過不斷更新這些寄存器,最終可以基于這些值的平均數來估算數據集的基數。

二、Redis HyperLogLog 命令

Redis 提供了以下命令來操作 HyperLogLog 數據結構:

  1. PFADD key element [element …]

    • 描述:將一個或多個元素添加到 HyperLogLog 中,用于估算基數。
    • 示例:PFADD myHyperLogLog user1 user2 user3
  2. PFCOUNT key [key …]

    • 描述:返回一個或多個 HyperLogLog 的估算基數。
    • 示例:PFCOUNT myHyperLogLog
  3. PFMERGE destkey sourcekey [sourcekey …]

    • 描述:將一個或多個 HyperLogLog 合并到另一個 HyperLogLog 中,用于合并不同數據集的基數估算。
    • 示例:PFMERGE total myHyperLogLog1 myHyperLogLog2

三、實戰案例

場景:網站獨立訪客計數

假設我們正在運營一個大型網站,需要統計每天的獨立訪客數。由于訪問量巨大,直接使用集合存儲每個訪客的唯一標識符會消耗過多的內存。這時,HyperLogLog 成為了理想的選擇。

步驟1:初始化 HyperLogLog
redis-cli DEL unique_visitors
步驟2:添加訪客到 HyperLogLog
redis-cli PFADD unique_visitors visitor1
redis-cli PFADD unique_visitors visitor2
redis-cli PFADD unique_visitors visitor3
步驟3:獲取獨立訪客數的近似計數
redis-cli PFCOUNT unique_visitors

場景:多源數據的合并計數

假設我們有多個來源的數據,需要匯總統計其中的唯一元素數量。例如,我們可能有來自不同服務器的日志數據,每份日志記錄了用戶的行為,現在需要統計總的唯一用戶行為數。

步驟1:初始化 HyperLogLog 并添加數據
redis-cli PFADD log1 user1 action1
redis-cli PFADD log1 user2 action2
redis-cli PFADD log2 user2 action3
redis-cli PFADD log2 user3 action4
步驟2:合并多個 HyperLogLog
redis-cli PFMERGE total_log log1 log2
步驟3:獲取合并后的唯一元素計數
redis-cli PFCOUNT total_log

四、總結

Redis HyperLogLog 提供了一種高效且節省內存的方式來估算大規模數據集中的唯一元素數量。在處理海量數據時,HyperLogLog 不僅能大幅減少內存消耗,還能保持較高的計數精度,是大數據分析和實時統計領域的有力工具。掌握 HyperLogLog 的使用,將幫助你在數據處理和分析中更加游刃有余,提升系統的性能和可擴展性。


喜歡博主的同學,請給博主一丟丟打賞吧↓↓↓您的支持是我不斷創作的最大動力喲!感謝您的支持哦😘😘😘
打賞下吧

💝💝💝如有需要請大家訂閱我的專欄【Redis系列】喲!我會定期更新相關系列的文章
💝💝💝關注!關注!!請關注!!!請大家關注下博主,您的支持是我不斷創作的最大動力!!!

Redis相關文章索引文章鏈接
Redis基礎教程(一):redis配置Redis基礎教程(一):redis配置
Redis基礎教程(二):redis數據類型Redis基礎教程(二):redis數據類型
Redis基礎教程(三):redis命令Redis基礎教程(三):redis命令
Redis基礎教程(四):redis鍵(key)Redis基礎教程(四):redis鍵(key)
Redis基礎教程(五):string字符串Redis基礎教程(五):string字符串
Redis基礎教程(六):redis 哈希(Hash)Redis基礎教程(六):redis 哈希(Hash)
Redis基礎教程(七):redis列表(List)Redis基礎教程(七):redis列表(List)
Redis基礎教程(八):redis集合(Set)Redis基礎教程(八):redis集合(Set)
Redis基礎教程(九):redis有序集合Redis基礎教程(九):redis有序集合

??????覺得有用的話點個贊 👍🏻 唄。
??????本人水平有限,如有紕漏,歡迎各位大佬評論批評指正!😄😄😄
💘💘💘如果覺得這篇文對你有幫助的話,也請給個點贊、收藏下吧,非常感謝!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且長,行則將至,讓我們一起加油吧!🌙🌙🌙

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

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

相關文章

Linux愛好者能對Linux癡迷到什么程度?

在開始前剛好我有一些資料,是我根據網友給的問題精心整理了一份「Linux的資料從專業入門到高級教程」, 點個關注在評論區回復“888”之后私信回復“888”,全部無償共享給大家!!!曾經想幫助全世界的人卸載掉…

歸并排序——有序序列的合并

目錄 1、簡述 2、復雜度 3、穩定性 4、例子 1、簡述 有序序列的合并(Merge of Sorted Sequences)是歸并排序的核心步驟之一。其目的是將兩個已經排序的序列合并成一個新的有序序列。這個過程在歸并排序中非常重要,因為歸并排序通過遞歸地…

技術職務管理助力智慧校園建設:深入解讀人事系統

智慧校園人事系統中的技術職務管理模塊,專注于高校及教育機構內技術人員及科研人員的職務管理,涵蓋職稱評審、技術職務任命、項目參與記錄、科研成果跟蹤及技術能力評估等多個方面,旨在通過信息化手段提升技術人才管理的效率與科學性。 在這一…

Windows如何安裝并啟動Nginx

0、前言 Nginx 是一款高性能、輕量級的Web服務器和反向代理服務器,廣泛應用于互聯網領域。它以其高效穩定、內存占用少和豐富的模塊化設計而受到開發者們的青睞。 在實際使用過程中,我們多數時候會在Linux系統上運行Nginx,但實際上&#xff…

單目行車測距攝像系統(單目測距-行車)

單目行車測距攝像系統是一種利用單個攝像頭實現車輛行駛中前方障礙物距離測量的技術。該系統通過計算機視覺算法,能夠實時分析攝像頭捕捉的圖像,精確計算出車輛與前方物體之間的距離,對于自動駕駛、高級駕駛輔助系統(ADAS&#xf…

PMP考試沒通過別擔心,補救辦法來了

2024年6月PMP考試成績正在陸續分批次發布。沒有考試通過的同學就會疑問,考試沒考過怎么辦?可不可以補考?面對PMP考試沒通過的情況,我們應該如何應對呢? 首先要告訴大家一個好消息!6月考試不通過的考生可以…

24年hvv不要掉進秘網了,特別別被反制了

這兩年的hvv,防守方已經不單單是每天坐那看監控、封ip了,越來越多的大佬投身防守工作中,讓防守從被動變成了一個主動的活了。 目前最常見的主動防守有2種,1、長時間的蜜罐運營。2、蜜罐反制。 01-蜜罐運營 蜜罐這個詞干安全的都…

七、函數練習

目錄 1. 寫一個函數可以判斷一個數是不是素數。(素數只能被1或其本身整除的數) 2. 一個函數判斷一年是不是閏年。 3.寫一個函數,實現一個整形有序數組的二分查找。 4. 寫一個函數,每調用一次這個函數,使得num每次增…

基于PHP花澗訂購系統的設計與實現00332

摘 要 近年來,電子商務的快速發展引起了行業和學術界的高度關注。花澗訂購系統旨在為用戶提供一個簡單、高效、便捷的花卉購物體驗,它不僅要求用戶清晰地查看所需信息,而且還要求界面設計精美,使得功能與頁面完美融合,…

PIL,OpenCV,Pytorch處理圖像時的通道順序(顏色,長寬深)

項目顏色通道順序長寬通道順序數據類型取值范圍PILRGBHWCndarray0-255 (byte)OpenCVBGRHWCndarray0-255 (byte)PyTorchRGB/BGR (取決于如何讀取)(N)CHWtensor0-1 (float, 標準化后); 0-255 (int, 未標準化) 注意以下幾點: 顏色通道順序:PIL默認使用RGB順…

圖像增強方法匯總OpenCV+python實現【第二部分:高級圖像增強方法】

圖像增強方法匯總OpenCV+python實現【第二部分:高級圖像增強方法】 前言高級圖像增強方法1. 隨機高斯模糊(Random Gaussian Blur)2. 隨機灰度(Random Grayscale)3. 隨機通道交換(Random Channel Swap)4. 隨機伽馬校正(Random Gamma Correction)5. 隨機透視變換(Rando…

監控易在某市電子政務外網的運維應用案例

隨著信息技術的飛速發展,電子政務已經成為政府提升服務效率、增強公眾滿意度的重要途徑。某市電子政務外網作為該市政府部門與外界交互的主要平臺,承載著大量關鍵業務與數據交互,其網絡環境的復雜性、應用特點的多樣性以及運維需求的挑戰性&a…

AI程序員還是代替不了程序員,震撼硅谷的Devin-ai程序員,再度震撼硅谷——但這次是被打假

文章目錄 主要疑點包括但不限于:35年從業者逐幀驗證 AI程序員還是代替不了程序員,震撼硅谷的Devin-ai程序員,再度震撼硅谷——但這次是被打假 一位油管程序員博主Internet of Bugs對Devin發布的視頻進行了逐幀分析,逐一舉證說明了…

【C語言】register 關鍵字

在C語言中,register關鍵字用于提示編譯器將變量盡量存儲在CPU的寄存器中,而不是在內存中。這是為了提高訪問速度,因為寄存器的訪問速度比內存快得多。使用register關鍵字的變量通常是頻繁使用的局部變量。 基本用法 void example() {regist…

貓頭虎分享[可靈AI」官方推薦的馴服指南-V1.0

貓頭虎分享[可靈AI」官方推薦的馴服指南-V1.0 貓頭虎是誰? 大家好,我是 貓頭虎,別名貓頭虎博主,擅長的技術領域包括云原生、前端、后端、運維和AI。我的博客主要分享技術教程、bug解決思路、開發工具教程、前沿科技資訊、產品評…

Git 基礎-創建版本庫 git init、添加到暫存區git add、查看狀態git status、查看改動git diff

目錄 1.創建版本庫 git init 1.創建版本庫 git init 在目錄中創建新的 Git 倉庫。 你可以在任何時候、任何目錄中這么做,完全是本地化的。 在目錄中執行 git init,就可以創建一個 Git 倉庫了。 注意: 沒事不要手動修改 .git 目錄里面的文件,不…

Nginx Http緩存的必要性!啟發式緩存有什么弊端?

👀 Nginx Http緩存的必要性!啟發式緩存有什么弊端? 簡介啟發式緩存引發的問題nginx緩存配置 簡介 我們在使用React或者Vue開發項目中會使用hash、chunkhash、contenthash來給靜態資源文件進行命名。這帶來的好處便是當我們部署完項目后&…

安卓微商大師V3.4.0/高級版一鍵群發僵尸粉檢測

一款高效獲取客源,備受好評的微商工具,資源豐富,秒速獲得客源,大量群客源,都是散客,攜手創業,是做微商生意的首選工具。打開即是黑鉆高級會員 趕快體驗吧 很強大 鏈接:https://pan.…

2023ICPC亞洲區域賽(合肥)VP補題題解(48th)

2023ICPC亞洲區域賽(合肥)VP補題題解記錄 文章目錄 2023ICPC亞洲區域賽(合肥)VP補題題解記錄寫在前面已更新 E F G J,待更新 B I C F and E(簽到題和簡單題)G. Streak Manipulation題目大意題目分析ac代碼參考 J. Takeout Delivering題目大意題目分析ac代碼參考 寫在…

CSS-position/transform

1 需求 2 語法 在CSS中,positioning 和 transform 是兩個非常重要的概念,它們分別用于控制元素在頁面上的布局和變換。 Positioning CSS中的position屬性用于設置元素的定位類型。它有幾個值,包括: static:這是默認…