Yii框架常见缓存应用实例小结


Posted in PHP onSeptember 09, 2019

本文实例讲述了Yii框架常见缓存应用。分享给大家供大家参考,具体如下:

1 首先,你需要安装apc or memcache or redis 。 安装完后。 以redis 为例。 至于如何安装,多找度娘。

在配置文件中components 添加如下。

'cache'=>array(
  'class'=>'core.extensions.redis.Predis',
     'class'=>'core.extensions.redis.CRedisCache',
     'servers'=>array(
      array(
        'host'=>'192.168.1.xx',
        'port'=>6379,
       ),
      ),
    ),

2 最简单的例子。 set get.

Yii::app()->cache->set('id', date("Y-m-d H:i:s"), 5); //设置有效时间为5.
echo Yii::app()->cache->get("id")."<br/>";
sleep(2);
echo Yii::app()->cache->get("id"); //缓存有效期内 会输出数据
sleep(4);
echo Yii::app()->cache->get("id"); //缓存失效,输出为空

3 数据库查询缓存。

//3.1 最简单的数据库缓存。
$sql = 'select * from {{settings}}';
$cmd = Yii::app()->db->cache(10, null)->createCommand($sql);
$rows = $cmd->queryAll();
//3.2 加一个缓存依赖的概念。
$dp_sql = "SELECT MAX(id) FROM plat2_settings ";
$dependency = new CDbCacheDependency( $dp_sql );
$sql  = "SELECT * FROM `plat2_settings`";
$rows = Yii::app()->db->cache(1000, $dependency)->createCommand($sql)->queryAll();

上面的代码意思是查询对应的数据的时候,会先判断依赖查询 SELECT MAX(id) FROM plat2_settings 的结果数据是否有更新,

如果有更新,则重新查询数据,如依赖未更新则直接调缓存数据。 过1000 秒后,会重新查询。

4 片断缓存。

if($this->beginCache("xx"))
{
  echo "test cache ";
  $this->endCache();
}
//beginCache 会存在第二个参数,意思是选用指定的缓存器。如果需要使用不同的缓存时,可以定制。

5 页面缓存。

public function filters(){
  return array(
    array(
      'COutputCache+index+admin',
      'duration' => 120,
      'varyByParam'=>array('id'),
    ),
  );
}

使用控制器,直接对指定的action 进行缓存处理 。

还有varyBySession 可以选配。

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
Banner程序
Oct 09 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
Dec 10 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
Oct 25 PHP
PHP 魔术变量和魔术函数详解
Feb 25 PHP
实现PHP框架系列文章(6)mysql数据库方法
Mar 04 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
php 生成签名及验证签名详解
Oct 26 PHP
php图形jpgraph操作实例分析
Feb 22 PHP
php头像上传预览实例代码
May 02 PHP
用Laravel Sms实现laravel短信验证码的发送的实现
Nov 29 PHP
Laravel 微信小程序后端实现用户登录的示例代码
Nov 26 PHP
php回调函数处理数组操作示例
Apr 13 PHP
Yii框架函数简单用法分析
Sep 09 #PHP
Yii框架的路由配置方法分析
Sep 09 #PHP
PHP实现时间日期友好显示实现代码
Sep 08 #PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
Sep 08 #PHP
Yii框架连表查询操作示例
Sep 06 #PHP
Laravel框架中缓存的使用方法分析
Sep 06 #PHP
Laravel框架实现的上传图片到七牛功能详解
Sep 06 #PHP
You might like
PHP的面试题集
2006/11/19 PHP
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
原来Jquery.load的方法可以一直load下去
2011/03/28 Javascript
js 火狐下取本地路径实现思路
2013/04/02 Javascript
Script标签与访问HTML页面详解
2014/01/10 Javascript
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
jquery实现表格本地排序的方法
2015/03/11 Javascript
JQuery radio(单选按钮)操作方法汇总
2015/04/15 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
使用vue.js开发时一些注意事项
2016/04/27 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
原生JS进行前后端同构
2018/04/22 Javascript
JavaScript原型式继承实现方法
2019/11/06 Javascript
Vue 中 filter 与 computed 的区别与用法解析
2019/11/21 Javascript
Python中列表(list)操作方法汇总
2014/08/18 Python
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
基于wxpython开发的简单gui计算器实例
2015/05/30 Python
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
python计算列表内各元素的个数实例
2018/06/29 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
Python实现LR1文法的完整实例代码
2020/10/25 Python
学校教师安全责任书
2014/07/23 职场文书
物流管理专业推荐信
2014/09/06 职场文书
让子弹飞观后感
2015/06/11 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书
MySQL 如何设计统计数据表
2021/06/15 MySQL