xcache本地快取的設計(一)

2021-05-04 12:13:03 字數 946 閱讀 2200

一、 儲存器

需要快取的物件是放在儲存器中的,最常用就是把這些物件放在記憶體中。儲存器是快取的基礎,xcache現在支援記憶體,未來可能支援更多的儲存媒介。在這部分設計中,採用乙個儲存器工廠,根據不同的儲存媒介生產不同的儲存器實現。見下圖。

storefactory:儲存器工廠,它負責生產不同的儲存器實現。

memorystore:使用記憶體的儲存器實現。為了實現高併發的儲存,使用jdk1.5提供的concurrenthashmap進行儲存。

二、 快取元素

在store介面**中,我們看到了element類,element就是快取元素。element成員見下**。

key用來唯一標識乙個快取元素,object就是我們要快取的物件。

createdtime、lastaccesstime、lastupdatetime、accesstimes、updatetimes都是對快取元素操作的統計。這些在判斷元素是否過期、是否需要退出的演算法中有用。我們後面會講到。

livetime、idletime是控制快取元素生命週期的。判斷元素是否過期見下**。

三、 快取

cache:快取介面,定義了快取的操作。見下**。

xcache:快取實現類。

cachestat:記錄快取統計資訊的類。快取操作的統計資訊都在這裡。

cachesuite:一套快取。其成員見下**。

abstracttask:抽象任務,定義任務的執行模式。見下**。

deleteexpireelementtask:刪除過期快取元素任務。

logcachestattask:記錄快取統計資訊任務。

cachefactory:快取工廠,它負責生產一套定製的快取。

cachemanager:快取管理器,負責快取初始化,管理多套快取。

未完待續~!

xcache本地快取的設計(二)

四 退出策略 乙個快取,它所存放的元素不可能無限制的增長,xcache限制了快取元素的數量。如果放入快取元素時,快取已經滿了,那我們將採用一定的策略從現有的快取中選出乙個快取元素退出,再將新的快取元素放入。現在支援三種策略,fifo 先進先出 lfu 最不經常使用 lru 最近最久未使用 見下圖。o...

MyBatis 快取詳解 一級快取(本地快取)介紹

一級快取也叫本地快取,mybatis 的一級快取是在會話 sqlsession 層面進行快取的。mybatis 的一級快取是預設開啟的,不需要任何的配置。首先我們必須去弄清楚乙個問題,在mybatis 執行的流程裡面,涉及到這麼多的物件,那麼快取perpetualcache 應該放在哪個物件裡面去維...

本地快取設計思想與注意事項

之前在寫mybatis文章時介紹過關於一級快取和二級快取的設計,本文通過結合mybatis設計的思想以及其他框架的設計,來介紹一下關於本地快取的設計方案和注意事項。本地記憶體資源非常寶貴,要合理利用,一般那些經常被訪問的,但是又不經常被修改的資料,即讀多寫少的資料,比如字典 標籤 定期更新的統計資料...