redis 統計億級活躍使用者

2021-09-12 10:59:08 字數 1159 閱讀 2899

使用位圖法來統計

可以用redis的setbit命令來統計(setbit   bitop)

1: 記錄使用者登陸:

每天按日期生成乙個位圖, 使用者登陸後,把user_id位上的bit值置為1

2: 把1周的點陣圖 and 計算,

位上為1的,即是連續登陸的使用者

redis 127.0.0.1:6379> setbit mon 100000000 0

(integer) 0

redis 127.0.0.1:6379> setbit mon 3 1

(integer) 0

redis 127.0.0.1:6379> setbit mon 5 1

(integer) 0

redis 127.0.0.1:6379> setbit mon 7 1

(integer) 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

redis 127.0.0.1:6379> bitop and res mon feb wen

(integer) 12500001

如上例,優點:

1: 節約空間, 1億人每天的登陸情況,用1億bit,約1200wbyte,約10m 的字元就能表示

2: 計算方便

redis統計使用者活躍數量

1。說明,redis 位圖儲存節省記憶體,使用者id 156,1333 如果使用者登入,根據日期儲存為1 setbit 20209001 156 1 id為156的使用者在1月1號登入了 setbit 20200901 1333 1 id為1333的使用者在1月1號登入了 setbit 202090...

redis統計各種活躍資料

舉個例子 假如乙個字串 z 他的ascii碼是122,二進位制是 0111 1010,offset 0就是從左往右數的第一位,offset 5就是從左往右數的第6位,這裡執行幾步操作 首先設定乙個string型別,key是 k value是 z 然後設定offset 6 為 0,offset 7 為...

Facebook月活躍使用者人數已達20億

pingwest品玩 6 月 28 道,facebook ceo馬克扎克伯格 mark zuckerberg 周二稱,facebook的月度活躍使用者人數已達 20 億人。截至 3 月 31 日為止,facebook的月度活躍使用者人數為19 4 億人,與去年同期相比增長17 這個數字佔www.cp...