TP緩存設計方案解析

TP的緩存主要依賴Cache類,Cache類實際上是一個代理類,Cache類經過getInstance靜態方法來獲取緩存實例,而getInstance方式實際是調用Cache類的connect方法,該方法相似於工廠返回對應緩存類型的驅動實例,這裏以Redis爲例,那麼這裏返回的就是CacheRedis驅動,該驅動在構造函數中會實例Redis擴展類,並賦值給handle屬性來作本地代理,因此咱們能夠像使用Redis類同樣的使用CahceRedis,並重寫get和set方法,提供對外的統一接口.緩存

查詢緩存函數

查詢緩存使用Model的cache方法來實現緩存處理,cache方法接受3個參數,分別爲:緩存的鍵,緩存時間,緩存類型,並返回當前Model的實例$this,在這裏Model只是將緩存信息存入options屬性,以後DB類在select方法中會檢測是否使用緩存,並調用S方法來作緩存的存取,S方法實際上則是使用Cache類來作存取this

緩存的鍵:能夠爲字符串或者true,若是爲true,那麼TP會根據生成的SQL語句的MD5值做爲key,緩存前綴讀取配置DATA_CACHE_PREFIXspa

緩存時間:以秒爲單位,若是不設置則讀取配置文件中DATA_CACHE_TIME的值代理

緩存類型:默認爲文件緩存,可選類型,這是TP默認支持的緩存驅動,也可本身擴展,若是不設置該值則讀取配置DATA_CACHE_TYPE接口

Redis相關配置字符串

REDIS_HOST 主機
REDIS_PORT 端口
相關文章
相關標籤/搜索