通過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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章