Redis計數在新浪微博的應用

2021-07-24 17:54:54 字數 613 閱讀 9947

作為微博中一項重要的資料,計數類業務在微博業務中佔的比重和重要性逐步提高。計數結果的準確度直接影響使用者體驗,並且很容易引起使用者的投訴。在計數業務上,在不斷的優化和改進中,我們主要經歷了以下三個階段:

從2023年開始,使用redis-2.0版本。在最初業務資料比較少的時候,表現相當不錯。但隨著資料量和請求量的不斷增加,一些問題逐漸暴露出來。

針對redis使用初期存在的問題,我們逐個進行了改進。主從複製參考mysql的同步方式,使用rdb+aof結合的方式,解決了網路瞬斷引起的重傳問題,同時限制子程序做後台dump時對磁碟的寫入,期間暫停主程序的fsync操作,解決了慢請求的問題。

針對計數業務,我們開發了專用的版本redisscounter,單個key-value占用的記憶體key的長度加4個位元組的value,將記憶體的使用量降低到原來的1/4以下。通過預先分配記憶體陣列和double hash技術,消除了redis中hash表的大量指標開銷。

對於版本公升級的問題,我們將redis的核心處理邏輯封裝到動態庫,記憶體中的資料儲存在全域性變數裡,通過外部程式來呼叫動態庫里的相應函式來讀寫資料。版本公升級時只需要替換成新的動態庫檔案即可,無須重新載入資料。通過這樣的方式,版本公升級只需執行一條指令,即可在毫秒級別完成**的公升級,同時對客戶端請求無任何影響。

學習新浪微博計數服務

本文摘自 官方ppt public doc velocity e5 88 86 e4 ba ab e5 be ae e6 9e b6 e6 9e 84 e8 ae be e8 ae a1 e4 b9 8b e5 be ae e5 8d 9a e8 ae a1 e6 95 b0 e5 99 a8 e6...

redis之微博應用

1 統計微博活躍使用者 採用位圖法儲存,bitset每個熱氣採用乙個變數,最後用位位運算即可獲取最終結果,每個使用者只需要一位。2 微博最新登陸的n個使用者。採用redis的list結構和sort方法獲取,list儲存使用者的登陸先後順序,sort倒敘排列的同時根據id獲取使用者的其他資訊。3 粉絲...

新浪微博的布局

import mjtabbaritem.h implementation mjtabbaritem id initwithframe cgrect frame itemdesc mjtabbaritemdesc desc return self pragma mark 覆蓋父類的2個方法 pragm...