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