zoukankan      html  css  js  c++  java
  • ShopNC 商城系统开发经验分享第五篇: 缓存设计

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

    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表并返回数组
    为了方便对缓存的操作,系统新增了HF两个快捷方法,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文件缓存

    本篇先写到这,后面还会继续分享缓存的使用。
    欢迎大家继续拍砖!

  • 相关阅读:
    PHP的函数应用
    MyEclipse 使用Junit
    JAVASE知识点总结
    常见排序算法
    数据结构的java实现
    JDK1.5新特性总结
    Oracle练习题
    Oracle面试题2
    Oracle面试题1
    分别使用Statement和PreparedStatement对数据库进行操作
  • 原文地址:https://www.cnblogs.com/gzmg/p/3480232.html
Copyright © 2011-2022 走看看