redis緩存預熱


 緩存預熱的思路

a.提前給redis中嵌入部分數據,再提供服務

b.肯定不可能將所有數據都寫入redis,因為數據量太大了,第一耗費的時間太長了,第二redis根本就容納不下所有的數據

c.需要更具當天的具體訪問情況,試試統計出頻率較高的熱數據

d.然后將訪問頻率較高的熱數據寫入到redis,肯定是熱數據也比較多,我們也得多個服務並行的讀取數據去寫,並行的分布式的緩存預熱

e.然后將嵌入的熱數據的redis對外提供服務,這樣就不至於冷啟動,直接讓數據庫奔潰了

(簡單講   不要讓所有的請求都去數據庫查   提前把一些熱點數據存入  至於哪些是熱數據  這就得實時分析了呀)

 

具體的實時方案:

1. nginx+lua將訪問量上報到kafka中

要統計出來當前最新的實時的熱數據是哪些,我們就得將商品詳情頁訪問的請求對應的流量,日志,實時上報到kafka中,

2. storm從kafka中消費數據,實時統計出每個商品的訪問次數,訪問次數基於LRU內存數據結構的存儲方案  (LRU  看次數)

3. 每個storm task啟動的時候,基於zk分布式鎖,將自己的id寫入zk的一個節點中

4. 每個storm task負責完成自己這里的熱數據的統計,比如每次計數過后,維護一個錢1000個商品的list,每次計算完都更新這個list

5. 寫一個后台線程,每個一段時間,比如一分鍾,將排名錢1000的熱數據list,同步到zk中


免責聲明!

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



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