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 相关文章推荐
第四节--构造函数和析构函数
Nov 16 PHP
个人站长制做网页常用的php代码
Mar 03 PHP
如何利用PHP执行.SQL文件
Jul 05 PHP
Destoon模板制作简明教程
Jun 20 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
Oct 14 PHP
typecho插件编写教程(四):插件挂载
May 28 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
深入讲解PHP的对象注入(Object Injection)
Mar 01 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
Aug 01 PHP
PHP实现的最大正向匹配算法示例
Dec 19 PHP
PHP实现可精确验证身份证号码的工具类示例
May 31 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
Oct 30 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/10/09 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
2012/08/31 PHP
iis6+javascript Add an Extension File
2007/06/13 Javascript
lyhucSelect基于Jquery的Select数据联动插件
2011/03/29 Javascript
基于JQuery的动态删除Table表格的行和列的代码
2011/05/12 Javascript
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
2016/02/04 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
2016/06/12 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
2018/08/10 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
利用Python开发实现简单的记事本
2016/11/15 Python
Python线性方程组求解运算示例
2018/01/17 Python
Python使用装饰器进行django开发实例代码
2018/02/06 Python
python语言中with as的用法使用详解
2018/02/23 Python
python2.7无法使用pip的解决方法(安装easy_install)
2018/04/03 Python
python 把列表转化为字符串的方法
2018/10/23 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
2019/04/11 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
python求质数列表的例子
2019/11/24 Python
Python正则表达式高级使用方法汇总
2020/06/18 Python
美国在线宠物用品商店:Entirely Pets
2017/01/01 全球购物
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
教师自荐信
2013/12/10 职场文书
不打扫卫生检讨书
2014/02/12 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
节约用电通知
2015/04/25 职场文书
组织委员竞选稿
2015/11/21 职场文书
2016年社区植树节活动总结
2016/03/16 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python