10萬用戶一年365天的登錄情況如何用redis存儲,並快速檢索任意時間窗內的活躍用戶


1、redsi的bitmap數據結構介紹

bitmap本質上是一個string類型,只是他操作的是string的某個位是0還是1。

setbit和getbit 兩條命令是對字符串的位操作。每個位只能是0/1,然后用Bitcount命令計算這個key有多少個1。

例如執行 setbit 'a' 10 1命令
redis會存以下數據

Bit運算,BITOP 支持四種表達式運算: AND(交集), OR(並集), XOR(異或) 和NOT(取非), 用法如下:
BITOP AND result srckey1 srckey2 srckey3 ... srckeyN
BITOP OR result srckey1 srckey2 srckey3 ... srckeyN
BITOP XOR result srckey1 srckey2 srckey3 ... srckeyN
BITOP NOT result srckey

2、記錄用戶每天的登錄情況

以日期為key,userId為偏移量,執行命令setbit day useId 1
例如:小梅(userId= 1992)和小明(userId=9877)在 2020-10-01日登錄;
setbit '2020-10-01' 1992 1
setbit '2020-10-01' 9877 1

小梅(userId= 1992)和小達(userId=10000)在 2020-10-02日登錄;
setbit '2020-10-02' 1992 1
setbit '2020-10-02' 10000 1

3、統計2020-10-01和2020-10-02活躍的用戶數量只需要執行命令

bitcount '2020-10-01'
bitcount '2020-10-02'

4、統計2020-10-01到2020-10-02這個時間端活躍的用戶數量只需要執行命令

bitop or 'result' '2020-10-01' '2020-10-02'
bitcount 'result'

5、查詢小梅在2020-10-01日有沒有登錄只需執行命令

getbit '2020-10-01' 1992


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM