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

微服務(wù)Spring Boot 整合 Redis 實(shí)現(xiàn)UV 數(shù)據(jù)統(tǒng)計(jì)的詳細(xì)過(guò)程

 更新時(shí)間:2023年01月18日 11:10:43   作者:Bug 終結(jié)者  
這篇文章主要介紹了微服務(wù)Spring Boot 整合 Redis 實(shí)現(xiàn) UV 數(shù)據(jù)統(tǒng)計(jì),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

?引言

本文參考黑馬 點(diǎn)評(píng)項(xiàng)目

在各個(gè)項(xiàng)目中,我們都可能需要用到UV數(shù)據(jù)統(tǒng)計(jì)功能,這樣可以使我們更加方便、快捷的查看網(wǎng)站的活躍度!

一、HyperLoglog基礎(chǔ)用法

?HyperLoglog 基本語(yǔ)法、命令

HyperLogLog

PFADD :將指定元素添加到HyperLogLogPFCOUNT:返回存儲(chǔ)在HyperLogLog結(jié)構(gòu)體的該變量的近似基數(shù),如果該變量不存在,則返回0PFMARGE:將多個(gè) HyperLogLog 合并(merge)為一個(gè) HyperLogLog , 合并后的 HyperLogLog 的基數(shù)接近于所有輸入 HyperLogLog 的可見(jiàn)集合(observed set)的并集.

詳見(jiàn)官網(wǎng): Redis 中文翻譯 官方網(wǎng)站 HyperLogLog

在這里插入圖片描述

?HyperLoglog 命令完成功能實(shí)現(xiàn)

PFADD命令

在這里插入圖片描述

使用PFADD 添加數(shù)據(jù)

在這里插入圖片描述

PFCOUNT 統(tǒng)計(jì)

  • 得到基數(shù)值,白話(huà)就叫做去重值(1,1,2,2,3, 3)的插入pfcount得到的是3
  • 可一次統(tǒng)計(jì)多個(gè)key
  • 時(shí)間復(fù)雜度為O(N),N為key的個(gè)數(shù)
  • 返回值是一個(gè)帶有 0.81% 標(biāo)準(zhǔn)錯(cuò)誤(standard error)的近似值.

在這里插入圖片描述

使用PFCOUNT查詢(xún)

在這里插入圖片描述

PFMERGE 合并

在這里插入圖片描述

合并key

在這里插入圖片描述

HyperLogLog 的應(yīng)用場(chǎng)景

  • 基數(shù)不大的、數(shù)據(jù)量不大就用不上。
  • 有局限性,就是只能統(tǒng)計(jì)基數(shù)數(shù)量,沒(méi)辦法統(tǒng)計(jì)具體的內(nèi)容
  • 和BitMap相比,屬于兩種特定統(tǒng)計(jì)情況,HyperLogLog比 BitMap去重方便很多
  • HyperLogLog 可以 與 BitMap 配合使用,BitMap標(biāo)識(shí)那些用戶(hù)活躍,HyperLogLog計(jì)數(shù)

二、UV統(tǒng)計(jì) 測(cè)試百萬(wàn)數(shù)據(jù)的統(tǒng)計(jì)

??什么是UV統(tǒng)計(jì)

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

通常來(lái)說(shuō) UV 會(huì)比 PV 大很多,一個(gè)網(wǎng)站的獨(dú)立訪客量 和 頁(yè)面訪問(wèn)或點(diǎn)擊量,肯定是獨(dú)立訪客大的。

UV統(tǒng)計(jì)在服務(wù)端做會(huì)比較麻煩,因?yàn)橐袛嘣撚脩?hù)是否已經(jīng)統(tǒng)計(jì)過(guò)了,需要將統(tǒng)計(jì)過(guò)的用戶(hù)信息保存。但是如果每個(gè)訪問(wèn)的用戶(hù)都保存到Redis中,數(shù)據(jù)量會(huì)非常恐怖,那怎么處理呢?

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

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

?使用SpringBoot單元測(cè)試進(jìn)行測(cè)試百萬(wàn)數(shù)據(jù)統(tǒng)計(jì)

首先進(jìn)入Redis 查看 內(nèi)存占用

info memory

在這里插入圖片描述

核心源碼

@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);
}

執(zhí)行后,如下圖

在這里插入圖片描述

再次查看內(nèi)存占比

在這里插入圖片描述

可以看出占用大約為14KB,存儲(chǔ)上百萬(wàn)數(shù)據(jù)只占用了14KB數(shù)據(jù),可見(jiàn)HyperLogLog的強(qiáng)大!

?小結(jié)

以上就是【Bug 終結(jié)者】對(duì) 微服務(wù)Spring Boot 整合 Redis 實(shí)現(xiàn) UV 數(shù)據(jù)統(tǒng)計(jì) 的簡(jiǎn)單介紹,UV數(shù)據(jù)統(tǒng)計(jì)功能是很常用的,在項(xiàng)目中,是一個(gè)不錯(cuò)的亮點(diǎn),統(tǒng)計(jì)功能也是各大系統(tǒng)中比較重要的功能,簽到完成后,去統(tǒng)計(jì)本月的連續(xù) 簽到記錄,來(lái)給予獎(jiǎng)勵(lì),可大大增加用戶(hù)對(duì)系統(tǒng)的活躍度,HyperLogLog可以與BitMap相結(jié)合,從而能夠能高效的對(duì)網(wǎng)站進(jìn)行深層次的分析! 技術(shù)改變世界?。。?/code>

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

相關(guān)文章

  • RabbitMQ開(kāi)啟SSL與SpringBoot連接測(cè)試的配置方法

    RabbitMQ開(kāi)啟SSL與SpringBoot連接測(cè)試的配置方法

    本文基于 CentOS 7 + Git + OpenSSL + yum 安裝的 RabbitMQ,需要讀者提交安裝好。其他方式也可變通參考本文。對(duì)RabbitMQ開(kāi)啟SSL與SpringBoot連接測(cè)試相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-01-01
  • Java面向?qū)ο缶幊讨?lèi)的繼承詳解

    Java面向?qū)ο缶幊讨?lèi)的繼承詳解

    這篇文章主要介紹了Java面向?qū)ο缶幊讨?lèi)的繼承,結(jié)合實(shí)例形式較為詳細(xì)的分析了Java面向?qū)ο缶幊填?lèi)的概念、功能、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-02-02
  • Java中MyBatis Plus知識(shí)點(diǎn)總結(jié)

    Java中MyBatis Plus知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理一篇關(guān)于Java中MyBatis Plus知識(shí)點(diǎn)總結(jié),需要的朋友們參考下。
    2019-10-10
  • 解決版本不兼容Jar包沖突問(wèn)題

    解決版本不兼容Jar包沖突問(wèn)題

    在和三方對(duì)接的過(guò)程中,我們可能會(huì)不斷引入一些三方j(luò)ar包,但這個(gè)時(shí)候就有可能出現(xiàn)一個(gè)項(xiàng)目需要依賴(lài)兩個(gè)版本不同且功能不兼容的jar包,本文主要介紹了解決版本不兼容Jar包沖突問(wèn)題,感興趣的可以了解一下
    2023-10-10
  • maven的三種工程pom、jar、war的區(qū)別

    maven的三種工程pom、jar、war的區(qū)別

    這篇文章主要介紹了maven的三種工程pom、jar、war的區(qū)別,詳細(xì)的介紹pom、jar、war和區(qū)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 手把手教你JAVA進(jìn)制之間的轉(zhuǎn)換

    手把手教你JAVA進(jìn)制之間的轉(zhuǎn)換

    這篇文章主要介紹了Java實(shí)現(xiàn)的進(jìn)制轉(zhuǎn)換,結(jié)合完整實(shí)例形式分析了Java實(shí)現(xiàn)二進(jìn)制、十六進(jìn)制、字符串、數(shù)組等相關(guān)轉(zhuǎn)換操作技巧,需要的朋友可以參考下
    2021-08-08
  • spring使用ehcache實(shí)現(xiàn)頁(yè)面緩存示例

    spring使用ehcache實(shí)現(xiàn)頁(yè)面緩存示例

    這篇文章主要介紹了spring使用ehcache實(shí)現(xiàn)頁(yè)面緩存示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • SpringBoot3.x接入Security6.x實(shí)現(xiàn)JWT認(rèn)證的完整步驟

    SpringBoot3.x接入Security6.x實(shí)現(xiàn)JWT認(rèn)證的完整步驟

    這篇文章主要介紹了Spring?Boot?3.x中Spring?Security?6.x的安全配置變化,特別是JWT過(guò)濾器的工作原理和配置方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02
  • SpringMVC實(shí)現(xiàn)登錄與注冊(cè)功能的詳細(xì)步驟

    SpringMVC實(shí)現(xiàn)登錄與注冊(cè)功能的詳細(xì)步驟

    本文介紹了如何通過(guò)Maven配置依賴(lài),創(chuàng)建前端登錄和注冊(cè)頁(yè)面,并實(shí)現(xiàn)后端邏輯,詳細(xì)步驟包括配置文件、創(chuàng)建User類(lèi)、配置中文過(guò)濾器及DispatcherServlet,并使用Spring?MVC和JQuery處理前端請(qǐng)求,需要的朋友可以參考下
    2024-11-11
  • 一文搞懂Java項(xiàng)目中枚舉的定義與使用

    一文搞懂Java項(xiàng)目中枚舉的定義與使用

    枚舉就是用enum修飾是一種Java特殊的類(lèi),枚舉是class、底層是繼承了java.lang.Enum類(lèi)的實(shí)體類(lèi)。本文將詳解枚舉的定義與使用,需要的可以參考一下
    2022-06-06

最新評(píng)論