一、背景介紹
前面幾篇文章,我們主要介紹了二級緩存架構的演進過程,並實戰演練了二級緩存架構實例,本篇文章我們將分享什麼呢?緩存預熱、緩存更新
特別提醒:最近發的文章是個系列文章,如果沒有看之前發佈的一些文章,操作上可能會遇到困難,講過的東西,不會再重複講,否則一篇文章會過於長了,當然你有任何問題,都可以在下方留言,我會盡可能的解答你的疑問
先看如下架構圖:
![緩存架構之實戰演練Elastic Job定時實現redis緩存預熱、緩存更新](http://p2.ttnews.xyz/loading.gif)
我們要實現的功能就是使用分佈式定時任務框架Elastic Job定時拉取db數據並刷新到redis中,實現緩存預熱、緩存更新的功能
那什麼是緩存預熱、緩存更新呢?
緩存預熱:緩存預熱就是系統上線後,將相關的緩存數據直接加載到緩存系統。這樣就可以避免在用戶請求的時候,先查詢數據庫,然後再將數據緩存的問題!用戶直接查詢事先被預熱的緩存數據!
我們的解決思路就是採用的定時刷新緩存,我們使用Elastic Job不僅可以定時出發,而且還可以在任意時刻在管控臺進行手動出發,是不是相當方便,如果想知道具體怎麼用,請繼續往下讀……
緩存更新:我們一般進行redis緩存的時候,都會設置緩存的過期時間,這樣可以實現無效key的自動刪除,不用手動自己來清除無效key;既然緩存會過期,那我們肯定要採用某種策略來實現緩存的全量更新,我們的解決思路就是通過定時任務實現緩存的定時全量更新
二、核心系統介紹
技術框架:springboot、redis、Elastic Job
代碼倉庫:這個代碼完全可以運行成功,本地演示過
https://gitee.com/jikeh/JiKeHCN-RELEASE.git
項目名
spring-boot-ad——廣告管理系統
spring-boot-redis-elastic-job——定時任務系統
1、Elastic Job是什麼
其實之前發佈的幾篇文章已經詳細介紹了Elastic Job的具體使用,並實戰演練了具體操作,有文章教程,也有視頻教程,如果你想進一步瞭解Elastic Job的具體使用,可以移步到如下地方,然後再回來繼續往下看:
重點關注Elastic Job管控臺的安裝與使用:
2、廣告管理系統(spring-boot-ad)中增加一個全量查詢廣告數據的接口
之前我們已經介紹了該系統的搭建:
1)增加一個控制器方法
![緩存架構之實戰演練Elastic Job定時實現redis緩存預熱、緩存更新](http://p2.ttnews.xyz/loading.gif)
2)mapper中增加一個方法,.xml文件中也增加相應的方法
3、定時任務系統(spring-boot-redis-elastic-job)
1)添加Elastic Job依賴
2)Elastic Job配置
(1)註冊中心配置:zookeeper
(2)job任務配置
properties配置:
3)Elastic Job任務
三、實戰操作演練
1、啟動zookeeper
關於zookeeper的使用,如果你不清楚,可以參考之前發佈的文章:
這裡僅講下使用:Windows下雙擊該命令即可啟動
2、啟動Elastic Job管控臺
關於管控臺的使用,如果你不清楚,可以參考之前發佈的文章:
這裡僅講下使用:Windows下雙擊該命令即可啟動
啟動後,訪問:http://localhost:8899/,即可進入管控臺
3、啟動廣告管理系統
項目名:spring-boot-ad
直接運行run,即可啟動我們的項目
4、啟動定時任務系統
項目名:spring-boot-redis-elastic-job
我們這裡設置的是每5分鐘執行一次,你可以根據實際場景進行合理的設置
1)將我們的定時任務配置到管控臺以便我們在管控臺上可以直接手動觸發任務
2)直接運行run,即可啟動定時任務系統
管控臺上的顯示:
5、啟動redis客戶端
如果你沒有合適的redis客戶端,可以參看我之前發佈的文章介紹:
先清空redis數據,5分鐘之後,觀察redis中是否已經有數據了==>定時任務正常執行;
再次清空redis數據,進入Elastic Job管控臺,手動觸發任務,再觀察redis中是否已經有數據了==>手動出發功能正常;
在我們的廣告管理系統上新建一個廣告,5分鐘之後,觀察redis中是否已經有該廣告數據了==>定時任務正常執行;
四、下節預告
藉助消息中間件實現edis緩存的實時更新r,也就是完成如下架構:
閱讀更多 極客慧 的文章