最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、HyperLogLog

1、為什么用HyperLogLog

先介紹兩個(gè)概念:

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

UV 統(tǒng)計(jì)在服務(wù)端做會(huì)比較麻煩,因?yàn)橐袛嘣撚脩羰欠褚呀?jīng)統(tǒng)計(jì)過(guò)了,需要將統(tǒng)計(jì)過(guò)的用戶信息保存。但是如果每個(gè)訪問(wèn)的用戶都保存到Redis 中,數(shù)據(jù)量會(huì)非??植馈?/p>

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

2、HyperLogLog是什么

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

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

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

二、實(shí)現(xiàn)UV統(tǒng)計(jì)

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

@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)計(jì)數(shù)量
    Long count = stringRedisTemplate.opsForHyperLogLog().size("hl2");
    System.out.println("count = " + count);
}

測(cè)試結(jié)果:

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

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

相關(guān)文章

  • Redis RDB快照持久化及寫操作禁止問(wèn)題排查與解決

    Redis RDB快照持久化及寫操作禁止問(wèn)題排查與解決

    本文主要介紹了Redis RDB快照持久化及寫操作禁止問(wèn)題排查與解決,由于?stop-writes-on-bgsave-error?選項(xiàng)處于啟用狀態(tài),所以寫操作被禁止,下面就來(lái)介紹一下,感興趣的可以了解一下
    2025-04-04
  • 使用Redis實(shí)現(xiàn)實(shí)時(shí)排行榜功能

    使用Redis實(shí)現(xiàn)實(shí)時(shí)排行榜功能

    排行榜功能是一個(gè)很普遍的需求。使用 Redis 中有序集合的特性來(lái)實(shí)現(xiàn)排行榜是又好又快的選擇。接下來(lái)通過(guò)本文給大家介紹使用Redis實(shí)現(xiàn)實(shí)時(shí)排行榜功能,需要的朋友可以參考下
    2021-07-07
  • Redis慢查詢?nèi)罩九c監(jiān)視器問(wèn)題

    Redis慢查詢?nèi)罩九c監(jiān)視器問(wèn)題

    這篇文章主要介紹了Redis慢查詢?nèi)罩九c監(jiān)視器問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 基于?Spring?Aop?環(huán)繞通知實(shí)現(xiàn)?Redis?緩存雙刪功能(示例代碼)

    基于?Spring?Aop?環(huán)繞通知實(shí)現(xiàn)?Redis?緩存雙刪功能(示例代碼)

    基于 spring aop 常規(guī)應(yīng)用場(chǎng)景多是用于日志記錄以及實(shí)現(xiàn) redis 分布式鎖,在 github 中也有項(xiàng)目是把它拿來(lái)當(dāng)作緩存的異常捕捉,這篇文章主要介紹了基于?Spring?Aop?環(huán)繞通知實(shí)現(xiàn)?Redis?緩存雙刪,需要的朋友可以參考下
    2022-08-08
  • Redis?SCAN命令詳解

    Redis?SCAN命令詳解

    SCAN 命令是一個(gè)基于游標(biāo)的迭代器,每次被調(diào)用之后, 都會(huì)向用戶返回一個(gè)新的游標(biāo), 用戶在下次迭代時(shí)需要使用這個(gè)新游標(biāo)作為 SCAN 命令的游標(biāo)參數(shù), 以此來(lái)延續(xù)之前的迭代過(guò)程,這篇文章給大家介紹了Redis?SCAN命令的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2022-07-07
  • Redis中的連接命令與鍵命令操作詳解

    Redis中的連接命令與鍵命令操作詳解

    Redis連接命令主要是用于客戶端與服務(wù)器建立連接的,Redis是一種流行的內(nèi)存數(shù)據(jù)庫(kù),支持多種數(shù)據(jù)結(jié)構(gòu),其中鍵命令是核心操作之一,在Redis中,鍵(Key)是用來(lái)存儲(chǔ)數(shù)據(jù)的主要元素,每個(gè)鍵都有一個(gè)唯一的名稱,本文給大家介紹了Redis中的連接命令與鍵命令操作
    2024-09-09
  • Redis高并發(fā)緩存問(wèn)題分析及解決過(guò)程

    Redis高并發(fā)緩存問(wèn)題分析及解決過(guò)程

    文章總結(jié)了Redis緩存的六種常見(jiàn)問(wèn)題及其解決方案:緩存穿透、緩存擊穿、緩存雪崩、熱點(diǎn)key重建優(yōu)化、緩存和數(shù)據(jù)庫(kù)雙寫不一致,以及Redis對(duì)過(guò)期key的三種清除策略,每種問(wèn)題都提供了詳細(xì)的原因分析和具體的解決方案
    2025-01-01
  • Redis中Zset類型常用命令的實(shí)現(xiàn)

    Redis中Zset類型常用命令的實(shí)現(xiàn)

    Zset是Redis的一種有序集合數(shù)據(jù)類型,Zset通過(guò)壓縮列表和跳躍表兩種底層編碼方式支持小數(shù)據(jù)集和大數(shù)據(jù)集,支持多種操作,包括添加、查詢、刪除元素以及集合運(yùn)算等,具有不同的時(shí)間復(fù)雜度,感興趣的可以了解一下
    2024-10-10
  • Redis緩沖區(qū)溢出及解決方案分享

    Redis緩沖區(qū)溢出及解決方案分享

    Redis緩沖區(qū)溢出是指Redis緩沖區(qū)被寫入的數(shù)據(jù)超過(guò)了它的容量,導(dǎo)致數(shù)據(jù)無(wú)法存儲(chǔ)或被覆蓋。造成緩沖區(qū)溢出的原因可能是快速寫入大量數(shù)據(jù)、緩沖區(qū)未及時(shí)刷新或Redis服務(wù)器配置不當(dāng)?shù)取?/div> 2023-04-04
  • Redis分片集群的實(shí)現(xiàn)

    Redis分片集群的實(shí)現(xiàn)

    Redis 分片集群是一種將 Redis數(shù)據(jù)庫(kù)分散到多個(gè)節(jié)點(diǎn)上的方式,以提供更高的性能和可伸縮性,本文主要介紹了Redis分片集群的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04

最新評(píng)論

平凉市| 华容县| 北安市| 海原县| 德钦县| 高邮市| 噶尔县| 岱山县| 韩城市| 祁东县| 潜江市| 新龙县| 广河县| 灵石县| 曲周县| 安新县| 邓州市| 长乐市| 汨罗市| 嵊州市| 开化县| 合山市| 达尔| 江川县| 澎湖县| 凌源市| 吉木乃县| 勃利县| 和平县| 郧西县| 天长市| 涟源市| 阿鲁科尔沁旗| 浦县| 岳阳市| 长乐市| 德格县| 嫩江县| 麻城市| 阿勒泰市| 林州市|