亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Redis實現(xiàn)UV統(tǒng)計的示例代碼

 更新時間:2023年01月29日 15:42:38   作者:卒獲有所聞  
本文主要介紹了Redis實現(xiàn)UV統(tǒng)計的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、HyperLogLog

1、為什么用HyperLogLog

先介紹兩個概念:

UV:全稱 Unique Visitor,也叫獨立訪客量,是指通過互聯(lián)網(wǎng)訪問、瀏覽這個網(wǎng)頁的自然人、1 天內(nèi)同一個用戶多次訪問該網(wǎng)站,只記錄 1 次。
PV:全稱 Page View,也叫頁面訪問量或點擊量,用戶每訪問網(wǎng)站的一個頁面,記錄一次 PV,用戶多次打開頁面,則記錄多次 PV。往往用來衡量網(wǎng)站的流量。

UV 統(tǒng)計在服務(wù)端做會比較麻煩,因為要判斷該用戶是否已經(jīng)統(tǒng)計過了,需要將統(tǒng)計過的用戶信息保存。但是如果每個訪問的用戶都保存到Redis 中,數(shù)據(jù)量會非??植?。

那么我們要怎么更好的記錄呢?就用到 HyperLogLog

2、HyperLogLog是什么

HyperLogLog(HLL)是從 Loglog 算法派生的概率算法,用于確定非常大的集合的基數(shù),而不需要存儲其所有值。

Redis 中的 HLL 是基于 String 結(jié)構(gòu)實現(xiàn)的,單個 HLL 的內(nèi)存永遠(yuǎn)小于 16kb,內(nèi)存占用低的令人發(fā)指!作為代價,其測量結(jié)果是概率性的,有小于 0.81% 的誤差。不過對于 UV 統(tǒng)計來說,這完全可以忽略。

不管加入多少重復(fù)元素,HyperLogLog都只記錄一次,天生適合做uv的統(tǒng)計

二、實現(xiàn)UV統(tǒng)計

我們直接用單元測試,向 HyperLogLog 中添加 100 萬條數(shù)據(jù),看看內(nèi)存占用和統(tǒng)計效果如何:

@Test
void testHyperLogLog() {
    String[] values = new String[1000];
    int j = 0;
    for (int i = 0; i < 1000000; i++) {
        j = i % 1000;
        values[j] = "user_" + i;
        if(j == 999){
            // 發(fā)送到 Redis
            stringRedisTemplate.opsForHyperLogLog().add("hl2", values);
        }
    }
    // 統(tǒng)計數(shù)量
    Long count = stringRedisTemplate.opsForHyperLogLog().size("hl2");
    System.out.println("count = " + count);
}

測試結(jié)果:

我們統(tǒng)計出來的數(shù)據(jù)跟100萬非常接近,誤差在0.02。而且發(fā)現(xiàn)內(nèi)存只消耗了14kb非常非常低

到此這篇關(guān)于Redis實現(xiàn)UV統(tǒng)計的示例代碼的文章就介紹到這了,更多相關(guān)Redis UV統(tǒng)計內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redis高并發(fā)問題的解決方法

    Redis高并發(fā)問題的解決方法

    這篇文章主要介紹了Redis高并發(fā)問題的解決辦法,具有很好的參考價值,感興趣的小伙伴們可以參考一下,具體如下:
    2018-05-05
  • Redis報錯“NOAUTH Authentication required”兩種解決方案

    Redis報錯“NOAUTH Authentication required”兩種解決方案

    Redis提供了一個命令行工具redis-cli,它允許你直接連接到Redis服務(wù)器,如果你知道Redis服務(wù)器的密碼,你可以在連接時直接提供它,本文給大家介紹連接了Redis報錯“NOAUTH Authentication required”兩種解決方案
    2024-05-05
  • redis 億級數(shù)據(jù)讀取的實現(xiàn)

    redis 億級數(shù)據(jù)讀取的實現(xiàn)

    本文主要介紹了redis 億級數(shù)據(jù)讀取的實現(xiàn),億級數(shù)據(jù)規(guī)模下實現(xiàn)高效的數(shù)據(jù)讀取成為了許多企業(yè)和開發(fā)者面臨的重大挑戰(zhàn),下面就來介紹一下,感興趣的可以了解一下
    2024-08-08
  • Redis?腳本和連接命令示例詳解

    Redis?腳本和連接命令示例詳解

    Redis腳本是一種可以實現(xiàn)復(fù)雜任務(wù)的腳本語言,可以用來快速履行復(fù)雜任務(wù),靈活處理數(shù)據(jù)管理和管理復(fù)雜的利用場景,這篇文章主要介紹了Redis?腳本和連接命令,需要的朋友可以參考下
    2023-09-09
  • 聊聊redis-dump工具安裝問題

    聊聊redis-dump工具安裝問題

    這篇文章主要介紹了redis-dump工具安裝問題,由于安裝redis-dump工具需要使用rvm?和gem工具所以要提前安裝,詳細(xì)的安裝過程本文給大家提到過,需要的朋友可以參考下
    2022-01-01
  • redis實現(xiàn)延遲任務(wù)的項目實踐

    redis實現(xiàn)延遲任務(wù)的項目實踐

    本文主要介紹了redis實現(xiàn)延遲任務(wù)的項目實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 基于redis+lua進行限流的方法

    基于redis+lua進行限流的方法

    這篇文章主要介紹了基于redis+lua進行限流,通過實例代碼詳細(xì)介紹了lua+redis進行限流的做法,開發(fā)環(huán)境使用idea+redis+lua,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Redis高并發(fā)防止秒殺超賣實戰(zhàn)源碼解決方案

    Redis高并發(fā)防止秒殺超賣實戰(zhàn)源碼解決方案

    本文主要介紹了Redis高并發(fā)防止秒殺超賣實戰(zhàn)源碼解決方案,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • linux 常見的標(biāo)識與Redis數(shù)據(jù)庫詳解

    linux 常見的標(biāo)識與Redis數(shù)據(jù)庫詳解

    這篇文章主要介紹了linux 常見的標(biāo)識與Redis數(shù)據(jù)庫,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Redis分布式鎖及4種常見實現(xiàn)方法

    Redis分布式鎖及4種常見實現(xiàn)方法

    本文主要介紹了Redis分布式鎖及4種常見實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05

最新評論