ShopNC 商城系統開發經驗分享第五篇: 緩存設計

http://bbs.phpchina.com/thread-266985-1-1.htmlphp

ShopNC 商城系統能夠對數據進行多種形式緩存,包括文件緩存、共享內存緩存和數據表緩存。目前已支持的內存緩存包括apc eAccelerator memcache xcache
系統由Cache 緩存類(位置:/framework/cache/cache.php )統一進行緩存操做,由Cache::getInstance 方法完成緩存類型實例化:
//取得memcache緩存實例
 
$obj_cache = Cache::getInstance('memcache');
 
//取得xcache緩存實例
 
//$obj_cache = Cache::getInstance('xcache');
 
//取得file緩存實例
 
//$obj_cache = Cache::getInstance('file');
 
  
 
//緩存賦值,鍵 -> 值:uid -> 1000
 
$obj_cache->set('uid',1000);
 
//讀取緩存
 
$obj_cache->get('uid');
 
//刪除緩存
 
$obj_cache->rm('uid');
系統須要將部分經常使用表信息(如基本配置表、商品分類表、店鋪分類表、快遞表、SEO 表等)生成緩存,爲了便於操做,系統對這些表的緩存處理封裝到專有的cache 模型中,使用Model('cache')->call( 表名) 便可獲得符合緩存格式的表信息。
// 取得SEO 緩存信息
Model('cache')->call(‘seo’)
// 系統將查詢seo 表並返回數組
爲了方便對緩存的操做,系統新增了H F 兩個快捷方法,H 方法對緩存類操做再次進行封裝。
如取得系統cache/setting.php 緩存信息:
H('setting');
內部執行過程爲:首先取得file 緩存實例
$obj_cache = Cache::getInstance('file')
判斷操做類型(刪除緩存?、緩存賦值?緩存讀取?此處是取得緩存),而後執行
$obj_cache->get('setting');
取得緩存內容,至此執行完畢。
 
使用H 方法將setting 表信息生成到文件緩存:
H('setting',true,'file');
內部執行過程爲:首先取得file 類型緩存實例,
$obj_cache = Cache::getInstance('file')
判斷操做類型(刪除緩存?、緩存賦值?緩存讀取?此處是刪除緩存),而後執行
$obj_cache->rm('setting');
刪除原有setting 緩存,而後實例化cache 模型並執行_setting 方法來從新取得最新的setting 表中的內容,
$list = Model('cache')->call(‘setting’);
使用set 方法寫入緩存
$obj_cache->set($key, $list, null,$expire);
最後返回true ,至此緩存生成成功。
F 快捷方法也能夠操做緩存,但F 只是一種快速度讀、寫文件緩存的方法,不可用於內存緩存的操做,F 方法不能直接將數據表內容生成緩存,只可將PHP 中已經存的內容(如數組、字符串等)生成到文件緩存,在讀取文件緩存時,F 效率更高,由於它不須要實例化cache 對象。
F('setting');    // 取得setting 緩存
F('setting',$data);    // $data 數組生成到setting 文件緩存

本篇先寫到這,後面還會繼續分享緩存的使用。
歡迎你們繼續拍磚!html

相關文章
相關標籤/搜索