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

相关文章
相关标签/搜索