1. 程式人生 > >redis訂閱發布消息操作本地緩存

redis訂閱發布消息操作本地緩存

修改 img eas jsb fill mar 定時 本地 緩存

Redis 本地緩存+遠程緩存方案

使用純java的ehcache作為本地緩存

Reids 作為遠程分布式緩存

解決redis緩存壓力過大,提高緩存速度,以及緩存性能。

Redis和ehcache緩存的區別

如果是單個應用或者對緩存訪問要求很高的應用,用ehcache。
如果是大型系統,存在緩存共享、分布式部署、緩存內容很大的,建議用redis。

緩存更新策略

1、廣播更新策略

使用redis的發布與訂閱來實現緩存更新廣播,本地緩存存放更新頻率低,但請求量很高的數據,對於更新頻率很高的數據應該由redis緩存來承擔。

當某臺服務器的本地緩存更新的時候,通過redis發布與訂閱機制發布該key的更新信息,其他服務器監聽到key的更新信息則更新本地緩存的key

具體實現

通過註解方式標明該方法時候使用緩存,緩存的超時時間,是否開啟本地緩存,如果開啟本地緩存則當更新緩存時,先更新本地緩存和redis緩存,然後通過redis發布更新廣播,其他服務器接收到該key的更新信息則更新本地緩存

如果添加類型的更新則本地緩存新建key然後查詢redis的key將value同步到本地緩存

如果修改類型的更新則查詢redis緩存然後將value同步到本地緩存。

如果刪除類型的更新則刪除本地緩存的key和value。

2、定時更新

考慮的本地緩存和服務器緩存要保證數據的一致性,防止因各種原因導致因廣播信息沒有接收到或者其他原因本地緩存沒有更新特加入定時更新策略。

定時更新是在廣播更新的基礎上在本地緩存加入超時時間,如果超過多長時間沒有接收到更新廣播,則清除本地緩存的key(設置超時時間),來保證緩存的最終一致性。

緩存註意點

本地緩存必須設置超時時間,必須定時更更新本地緩存,防止因各種原因導致的本地緩存和redis緩存不一致,保證緩存的一致性。

redis緩存不應該設置永久緩存,防止因更新失敗導致的緩存不一致,以及僵屍類型的key占用服務器內存(一些系統配置級別的可以設置永久緩存,如系統配置,基本上不會進行更新的或者更新頻率很低的)

架構流程圖

單節點架構圖

技術分享

多節點架構圖

技術分享

redis訂閱發布消息操作本地緩存