亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用 Redis 統計獨立用戶訪問量

發布時間:2021-07-22 23:24:52 來源:億速云 閱讀:148 作者:chen 欄目:大數據

本篇內容主要講解“如何用 Redis 統計獨立用戶訪問量”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何用 Redis 統計獨立用戶訪問量”吧!



今天來聊一聊拼多多的一道后臺面試真題,是一道簡單的架構類的題目:  拼多多有數億的用戶,那么對于某個網頁,怎么使用Redis來統計一個網站的用戶訪問數呢?  

使用Hash

哈希是Redis的一種基礎數據結構,Redis底層維護的是一個開散列,會把不同的key映射到哈希表上,如果是遇到關鍵字沖突,那么就會拉出一個鏈表出來。

當一個用戶訪問的時候,如果用戶登陸過,那么我們就使用用戶的id,如果用戶沒有登陸過,那么我們也能夠前端頁面隨機生成一個key用來標識用戶,當用戶訪問的時候,我們可以使用HSET命令,key可以選擇URI與對應的日期進行拼湊,field可以使用用戶的id或者隨機標識,value可以簡單設置為1。

當我們要統計某一個網站某一天的訪問量的時候,就可以直接使用HLEN來得到最終的結果了。

如何用 Redis 統計獨立用戶訪問量

優點:簡單,容易實現,查詢也是非常方便,數據準確性非常高。

缺點:占用內存過大,。隨著key的增多,性能也會下降。小網站還行,拼多多這種數億PV的網站肯定受不了

使用Bitset

我們知道,對于一個32位的int,如果我們只用來記錄id,那么只能夠記錄一個用戶,但如果我們轉成2進制,每位用來表示一個用戶,那么我們就能夠一口氣表示32個用戶,空間節省了32倍!對于有大量數據的場景,如果我們使用bitset,那么,可以節省非常多的內存。對于沒有登陸的用戶,我們也可以使用哈希算法,把對應的用戶標識哈希成一個數字id。bitset非常的節省內存,假設有1億個用戶,也只需要100000000/8/1024/1024約等于12兆內存。

如何用 Redis 統計獨立用戶訪問量

Redis已經為我們提供了SETBIT的方法,使用起來非常的方便,我們可以看看下面的例子,我們在item頁面可以不停地使用SETBIT命令,設置用戶已經訪問了該頁面,也可以使用GETBIT的方法查詢某個用戶是否訪問。最后我們通過BITCOUNT可以統計該網頁每天的訪問數量。

如何用 Redis 統計獨立用戶訪問量

優點占用內存更小,查詢方便,可以指定查詢某個用戶,數據可能略有瑕疵,對于非登陸的用戶,可能不同的key映射到同一個id,否則需要維護一個非登陸用戶的映射,有額外的開銷。

缺點如果用戶非常的稀疏,那么占用的內存可能比方法一更大。

使用概率算法

對于拼多多這種多個頁面都可能非常多訪問量的網站,如果所需要的數量不用那么準確,可以使用概率算法,事實上,我們對一個網站的UV的統計,1億跟1億零30萬其實是差不多的。在Redis中,已經封裝了HyperLogLog算法,他是一種基數評估算法。這種算法的特征,一般都是數據不存具體的值,而是存用來計算概率的一些相關數據。

如何用 Redis 統計獨立用戶訪問量

當用戶訪問網站的時候,我們可以使用PFADD命令,設置對應的命令,最后我們只要通過PFCOUNT就能順利計算出最終的結果,因為這個只是一個概率算法,所以可能存在0.81%的誤差。

優點占用內存極小,對于一個key,只需要12kb。對于拼多多這種超多用戶的特別適用。

缺點查詢指定用戶的時候,可能會出錯,畢竟存的不是具體的數據。總數也存在一定的誤差。

到此,相信大家對“如何用 Redis 統計獨立用戶訪問量”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临沭县| 萨嘎县| 威信县| 吉首市| 酒泉市| 扶沟县| 水城县| 天门市| 濉溪县| 湖南省| 大宁县| 宜良县| 东兴市| 高阳县| 慈利县| 启东市| 罗城| 黄梅县| 依兰县| 县级市| 固安县| 贵溪市| 巴南区| 库车县| 金秀| 清原| 察哈| 霸州市| 曲沃县| 通州区| 大庆市| 克什克腾旗| 社旗县| 绥滨县| 乌鲁木齐县| 伊春市| 齐齐哈尔市| 玉环县| 星子县| 容城县| 承德县|