1白热、redis的bitmap數(shù)據(jù)結(jié)構(gòu)介紹
bitmap本質(zhì)上是一個string類型敛助,只是他操作的是string的某個位是0還是1。
setbit和getbit 兩條命令是對字符串的位操作屋确。每個位只能是0/1纳击,然后用Bitcount命令計算這個key有多少個1。
例如執(zhí)行setbit 'a' 10 1
命令
redis會存以下數(shù)據(jù)
Bit運算攻臀,BITOP 支持四種表達(dá)式運算: 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為偏移量刨啸,執(zhí)行命令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)和小達(dá)(userId=10000)在 2020-10-02日登錄;
setbit '2020-10-02' 1992 1
setbit '2020-10-02' 10000 1
3设联、統(tǒng)計2020-10-01和2020-10-02活躍的用戶數(shù)量只需要執(zhí)行命令
bitcount '2020-10-01'
bitcount '2020-10-02'
4、統(tǒng)計2020-10-01到2020-10-02這個時間端活躍的用戶數(shù)量只需要執(zhí)行命令
bitop or 'result' '2020-10-01' '2020-10-02'
bitcount 'result'
5、查詢小梅在2020-10-01日有沒有登錄只需執(zhí)行命令
getbit '2020-10-01' 1992