通過redis的setbit及bitcount方式高效統計網站當前在線人數


關於統計在線人數,第一反應想到的是創建一個大型字典存儲用戶id與對應的狀態,但是這種方法耗費空間大,效率較低。因此選擇redis作為查詢用戶登錄狀態更為方便快捷。

原理:通過將用戶 id 作為位數,每次上線則將該位設為 1,下線則設為 0,通過 bitcount 來查詢有多少 1,通過 getbit,傳入用戶 id 來判斷當前用戶是否為上線狀態。

SETBIT key offset value
 
BITCOUNT key [start end] -> 返回的是二進制中 1 的個數
 
GETBIT key offset

如,一個id = 888888 的用戶上線了:

setbit usercount 888888 1 (這里當前usercount雖然沒有888888位,但只要通過setbit就可以創建)
id = 8889 的用戶上線
setbit usercount 8889 1

然后通過bitcount usercount判斷有多少1,則就知道有多少在線人數了。(當前bitcount usercount 返回2,代表有2位用戶在線)

通過 getbit usercount 8889,來判斷用戶id = 8889 的用戶是否在線。此時返回的結果為1.
通過 setbit usercount 8889 0,來設置用戶id = 8889 的用戶進行下線。

然后再通過bitcount usercount獲取有多少在線人數。此時返回的結果為1.


免責聲明!

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



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