1. 程式人生 > >redis實際應用點陣圖法統計活躍使用者

redis實際應用點陣圖法統計活躍使用者

場景:1. 1億使用者,使用者有頻繁登陸的,有不經常登陸的、
2.如何記錄使用者的登陸資訊
3.如何來查詢活躍使用者,【如1周內登陸3次的】

解決思路:
用點陣圖法來進行解決。登陸的使用者為1,沒有登陸的使用者為0
Log0721: ‘011001……………0’

……
log0726 : ‘011001……………0’
Log0727 : ‘0110000………….1’

//設定一個1億位的變數 mon 位值都為 0
redis 127.0.0.1:6379> setbit mon 100000000 0
(integer) 0
//將第三個位的值設定為1 及第三個使用者在週一登陸了
redis 127.0.0.1:6379> setbit mon 3 1
(integer) 0
//將第5個位的值設定為1及第5個使用者在週一登陸了
redis 127.0.0.1:6379> setbit mon 5 1
(integer) 0
redis 127.0.0.1:6379> setbit mon 7 1
(integer) 0
//設定一個1億位的變數 thur 位值都為 0
redis 127.0.0.1:6379> setbit thur 100000000 0
(integer) 0
redis 127.0.0.1:6379> setbit thur 3 1
(integer) 0
redis 127.0.0.1:6379> setbit thur 5 1
(integer) 0
redis 127.0.0.1:6379> setbit thur 8 1
(integer) 0
redis 127.0.0.1:6379> setbit wen 100000000 0
(integer) 0
redis 127.0.0.1:6379> setbit wen 3 1
(integer) 0
redis 127.0.0.1:6379> setbit wen 4 1
(integer) 0
redis 127.0.0.1:6379> setbit wen 6 1
(integer) 0
//做一個and操作
redis 127.0.0.1:6379> bitop and res mon feb wen
(integer) 12500001