Yii的自带缓存的使用
Yii的自带缓存都继承CCache 类, 在使用上基本没有区别
缓存基础类 CCache 提供了两个最常用的方法:set() 和 get()。
要在缓存中存储变量 $value,我们选择一个唯一 ID 并调用 set() 来存储它:
Yii::app()->cache->set($id, $value);
被缓存的数据会一直保留在缓存中,直到因一些缓存策略而被删除(比如缓存空间满了,删除最旧的数据)。要改变这一行为,我们还可以在调用 set() 时加一个过期参数,这样数据过一段时间就会自动从缓存中清除。
Yii::app()->cache->set($id, $value, 30); //在缓存中保留该值最多 30 秒
当我们稍后需要访问该变量时(不管是不是同一 Web 请求),我们调用 get() (传入 ID)来从缓存中获取它。如果返回值为 false,说明该缓存不可用,需要我们重新生成它。
$value=Yii::app()->cache->get($id);
if($value===false)
{
// 因为在缓存中没找到,重新生成 $value
// 再缓存一下以备下次使用
// Yii::app()->cache->set($id,$value);
}
为一个要缓存的变量选择 ID 时,确保该 ID 在应用中是唯一的。不必保证 ID 在跨应用的情况下保证唯一,因为缓存组件有足够的智能来区分不同应用的缓存 ID。
要从缓存中删除一个缓存值,调用 delete();要清空所有缓存,调用 flush()。调用 flush() 时要非常小心,因为它会把其它应用的缓存也清空。
提示: 因为 CCache 实现了 ArrayAccess 接口,可以像数组一样使用缓存组件。例如:
$cache=Yii::app()->cache;
$cache['var1']=$value1; // 相当于: $cache->set('var1',$value1);
$value2=$cache['var2']; // 相当于: $value2=$cache->get('var2');
要使用这些缓存也很简单,只要服务器支持, 然后通进简单的修改配置文件即可使用
Memcache 的使用
1. 编辑配置文件config/main.php 添加memcache配置
array(
'components'=>array(
'memcache'=>array(
'class'=>' system.caching.CMemCache',
'servers'=>array(
array(
'host'=>'server1',
'port'=>11211,
'weight'=>60,
),
array(
'host'=>'server2',
'port'=>11211,
'weight'=>40,
),
),
),
),
)
2. 在框架中的使用
Yii::app()->memcache ->set($key, $value, $expire);
Yii::app()->memcache ->get($key);
Yii::app()->memcache ->deleteValue($key);
数据库缓存的使用
1. 编辑配置文件config/main.php 添加dbcache配置
return array(
......
'components'=>array(
......
'dbcache'=>array(
'class'=>' system.caching.CDbCache',
),
'db'=>array(
'class'=>'system.db.CDbConnection',
'connectionString'=>'sqlite:/wwwroot/blog/protected/data/blog.db',
'schemaCachingDuration'=>3600,
),
),
);
2. 在框架中的使用
Yii::app()->dbcache ->set($key, $value, $expire);
Yii::app()->dbcache ->get($key);
文件缓存的使用
1. 编辑配置文件config/main.php 添加dbcache配置
// application components
'components'=>array(
'filecache'=>array(
'class'=>'system.caching.CFileCache',
//我们使用CFileCache实现缓存,缓存文件存放在runtime文件夹中
'directoryLevel'=>'2', //缓存文件的目录深度
),
),
2. 在框架中的使用
Yii::app()->filecache ->set($key, $value, $expire);
Yii::app()->filecache ->get($key);
APC使用
1. 编辑配置文件config/main.php 添加dbcache配置
'components'=>array(
'class' => 'system.caching.CApcCache',
),
Yii的自带缓存的使用的更多相关文章
- 带缓存的输入输出-bufferedinputstream类与bufferedoutputstream类
		
package hengzhe.cn.o1; import java.io.*; /* * 带缓存的输入输出-bufferedinputstream类与bufferedoutputstream类 * ...
 - 不带缓存的I/O和标准(带缓存的)I/O
		
首先,先稍微了解系统调用的概念: 系统调用,英文名system call,每个操作系统都在内核里有一些内建的函数库,这些函数可以用来完成一些系统系统调用把应用程序的请求传给内核,调用相应的 ...
 - 基于AFN封装的带缓存的网络请求
		
给大家分享一个基于AFN封装的网络请求 git: https://github.com/zhouxihi/NVNetworking #带缓存机制的网络请求 各类请求有分带缓存 , 不带缓存, 可自定义 ...
 - Delphi中带缓存的数据更新技术
		
一. 概念 在网络环境下,数据库应用程序是c/s或者是多层结构的模式.在这种环境下,数据库应用程序的开发应当尽可能考虑减少网络数据传输量,并且尽量提高并发度.基于这个目的,带缓存的数据更新技术应运而生 ...
 - 带标准IO带缓存区和非标准IO  遇到fork是的情况分析
		
废话不多说 直接代码 #include<stdio.h> #include<sys/types.h> #include<unistd.h> #include< ...
 - 不带缓存IO和标准(带缓存)IO
		
linux对IO文件的操作分为: 不带缓存:open read.posix标准,在用户空间没有缓冲,在内核空间还是进行了缓存的.数据-----内核缓存区----磁盘 假设内核缓存区长度为100字节,你 ...
 - 使用TP自带缓存时。出现第一次拿不到数据。
		
使用TP自带缓存时.出现第一次拿不到数据. 仔细检查逻辑发现了问题所在. 逻辑:直接读缓存,如果没有从数据库查询,然后存入缓存. 问题出在以为$exchange = S($fileName,$exch ...
 - 带缓存的基于DateTimeFormatter的日期格式化工具类
		
JAVA中的SimpleDateFormat是非线程安全的,所有在1.8的JDK版本里提供了线程安全的DateTimeFormatter类,由于是线程安全的,故我们可以将此类缓存起来多次利用提高效率. ...
 - Spring Boot 自带缓存及结合 Redis 使用
		
本文测试环境: Spring Boot 2.1.4.RELEASE + Redis 5.0.4 + CentOS 7 自带缓存 如果没有使用缓存中间件,Spring Boot 会使用默认的缓存,我们只 ...
 
随机推荐
- MobileNets: Open-Source Models for Efficient On-Device Vision
			
https://research.googleblog.com/2017/06/mobilenets-open-source-models-for.html Wednesday, June 14, ...
 - 17)PHP,函数基础和参数问题
			
(1)函数定义形式: function 函数名字(形参1,形参2,形参3........) { 函数体(代码块) } (2)调用形式: 第一种:没有返回值的函数,则调用独立的语句 函数名(实参1,实参 ...
 - 8)post方式提交和简单那处理
			
带有htmll的代码: 实现简单的计算器 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &qu ...
 - c语言中continue的运用,同时学习接收字符,打印字符,遍历字符
			
/************************************************************************* > File Name: continue. ...
 - windows10系统激活方法
			
我使用的是第一种方法,很好用,企业版 https://blog.csdn.net/qq_39146974/article/details/82967054
 - 基于Wiki的知识共享平台模型架构
			
一.引言 当今的全球化知识经济社会中呈现出信息泛滥和知识更新周期短的现象,知识管理逐渐成为现代企业管理中不容忽视的一环.虚拟企业是基于共识目标而组成的动态协作组织,成员参与的流动性与各成员之间地域分布 ...
 - 401认证钓鱼demo
			
<?php //@b4dboy if(!isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['PHP_AUTH_PW'])) ...
 - 网站爬取-案例三:今日头条抓取(ajax抓取JS数据)
			
今日头条这类的网站制作,从数据形式,CSS样式都是通过数据接口的样式来决定的,所以它的抓取方法和其他网页的抓取方法不太一样,对它的抓取需要抓取后台传来的JSON数据,先来看一下今日头条的源码结构:我们 ...
 - SPI以及IIC的verilog实现以及两者之间的对比
			
一.SPI是一种常用的串行通信接口,与UART不同的地方在于.SPI可以同时挂多个从机,但是UART只能点对点的传输数据,此外SPI有四条线实现数据的传输,而UART采用的是2条实现串行数据的传输 1 ...
 - python数据类型:元组
			
python数据类型:元组 python的元组与列表类似,但是元组的元素不能修改 元组使用小括号,列表使用大括号 元组创建简单,只需要在括号中添加元素,使用逗号隔开 创建元组: tup1 = (50, ...