数据缓存需要缓存组件提供支持,它代表各种缓存存储器, 例如内存,文件,数据库。

'components' => [
'cache' => [
'class' => 'yii\caching\FileCache',
// 上面这种是Yii默认的缓存方式,标准文件缓存数据,当然也可以使用其他方式,如:
// 'class' => 'yii\caching\MemCache',
// 'class' => 'yii\caching\ApcCache',
],
]
支持的缓存方式

    yii\caching\ApcCache:使用 PHP APC 扩展。这个选项可以 认为是集中式应用程序环境中(例如:单一服务器, 没有独立的负载均衡器等)最快的缓存方案。
yii\caching\DbCache:使用一个数据库的表存储缓存数据。要使用这个缓存,你必须 创建一个与 yii\caching\DbCache::cacheTable 对应的表。
yii\caching\DummyCache:仅作为一个缓存占位符,不实现任何真正的缓存功能。 这个组件的目的是为了简化那些需要查询缓存有效性的代码。
例如,在开发中如果服务器没有实际的缓存支持,用它配置 一个缓存组件。一个真正的缓存服务启用后,可以再切换为使用相应的缓存组件。
两种条件下你都可以使用同样的代码 Yii::$app->cache->get($key) 尝试从缓存中取回数据而不用担心 Yii::$app->cache 可能是 null。
yii\caching\FileCache:使用标准文件存储缓存数据。这个特别适用于 缓存大块数据,例如一个整页的内容。
yii\caching\MemCache:使用 PHP memcache 和 memcached 扩展。 这个选项被看作分布式应用环境中(例如:多台服务器, 有负载均衡等)最快的缓存方案。
yii\redis\Cache:实现了一个基于 Redis 键值对存储器 的缓存组件(需要 redis 2.6.12 及以上版本的支持 )。
yii\caching\WinCache:使用 PHP WinCache (另可参考 )扩展。
yii\caching\XCache:使用 PHP XCache扩展。
yii\caching\ZendDataCache:使用 Zend Data Cache 作为底层缓存媒介。 缓存的增删改查示例 // 加载缓存组件
$cache = \Yii::$app->cache; // 添加一个缓存
$cache->add('name','zhangsan'); // 更改一个缓存
$cache->set('name' , 'lisi'); // 删除一个缓存
$cache->delete('name'); // 获取缓存内容
$cache->get('name') // 查看缓存是否存在
if($cache->exists('name')){
echo '存在';
} // 同时增加多个缓存
$cache->madd(['name' => 'zhangsan' , 'age' => 18]); // 同时获取多个缓存
var_dump($cache->mget(['name' , 'age'])); // 清空缓存
$cache->flush(); 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 设置缓存有效期 默认情况下,缓存中的数据会永久存留,除非它被某些缓存策略强制移除(例如: 缓存空间已满,最老的数据会被移除)。要想改变此特性,可以使用 yii\caching\Cache::add() 和 yii\caching\Cache::set() 的第三个参数来改变。 // 加载缓存组件
$cache = \Yii::$app->cache;
// 默认该缓存在20秒之后过期
$cache->add('name','zhangsan',20);
// 同样
$cache->set('name','zhangsan',20); 1
2
3
4
5
6 1
2
3
4
5
6 缓存依赖 除了超时设置,缓存数据还可能受到缓存依赖的影响而失效。我们可以使用 yii\caching\Cache::add() 和 yii\caching\Cache::set() 的第四个参数来设置。 // 加载组件
$cache = \Yii::$app->cache; // 文件依赖
$dependency = new \yii\caching\FileDependency(['fileName'=>'robots.txt']);
// 如果 robots.txt 被修改,该缓存也立刻失效
$cache->add('the', 'hello world!', 3000, $dependency);
$result = $cache->get('the'); // 表达式依赖
$dependency = new \yii\caching\ExpressionDependency(
['expression' => '\Yii::$app->request->get("name")']
);
// 这里使用的表达式是获取$_GET['name']的值,如果值改变,该缓存失效
$cache->add('two', 'hello world!', 3000, $dependency);
$result = $cache->get('two'); // 数据库依赖
$dependency = new \yii\caching\DbDependency(
['sql' => 'SELECT count(*) FROM test.user']
);
// 当数据库字段发生变化时,该缓存失效
$cache->add('three', 'hello world!', 3000, $dependency);
$result = $cache->get('three');

Yii2 cache的用法(1)的更多相关文章

  1. Yii2 AR find用法 (2016-05-18 12:06:01)

    Yii2 AR find用法 (2016-05-18 12:06:01) 转载▼     User::find()->all();    返回所有数据   User::findOne($id); ...

  2. yii2 httpClient的用法

    yii2 httpClient的用法示例: <?php /* * @Purpose : yii2 httpClient 请求示例 * @Author : Chrdai * @Time : 201 ...

  3. Application,Session,Cookie,ViewState,Cache对象用法、作用域的区别

    1.Application:用于保存所有用户共用的数据信息.在Asp.Net中类似的配置数据最好保存在Web.config文件中.如果使用Application对象,一个需要考虑的问题是任何写操作都要 ...

  4. c#Cache的用法

    public class Cache { /// <summary> /// 获取数据缓存 /// </summary> /// <param name="ca ...

  5. .net Cache的用法

    HttpContext.Current.Cache 使用方法 .net Cache 怎么使用 /// <summary>        /// 简单创建/修改Cache,前提是这个值是字符 ...

  6. yii2 ActiveRecord常用用法

    User::find()->all();    返回所有数据   User::findOne($id);   返回 主键 id=1  的一条数据   User::find()->where ...

  7. Yii2常用ActiveRecord用法

    1.多表连表查询与对象关联查询 public function getWmsCheck(){ return $this->hasOne(\core\models\WmsCheck::classN ...

  8. .NET Application,Session,Cookie,ViewState,Cache对象用法

    作用域 保存地址 生命周期Application 应用程序 服务器内存 IIS启动Session 整个站点 服务器内存 Session到时 默认20分钟Cashe 应用程序 服务器内存 应用程序的周期 ...

  9. 细说 ASP.NET Cache 及其高级用法

    许多做过程序性能优化的人,或者关注过程程序性能的人,应该都使用过各类缓存技术. 而我今天所说的Cache是专指ASP.NET的Cache,我们可以使用HttpRuntime.Cache访问到的那个Ca ...

随机推荐

  1. 豆瓣源安装requirements.txt

    豆瓣源安装requirements.txt pip install -i https://pypi.doubanio.com/simple/ -r requirements.txt

  2. type、object和class的关系

  3. hdu1598

    思路:对所有路径的速度从小到大排个序,然后枚举高度差就ok...... #include<iostream> #include<cstdio> #include<cstr ...

  4. ASP.NET学习笔记(2)——用户增删改查

    说明(2017-7-4 11:48:50): 1. index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transition ...

  5. 解决hibernate向mysql插入中文乱码问题(转)

    转载自:http://blog.csdn.net/peditable/article/details/7047573 1.首先需要修改MySQL数据库的配置文件my.ini,此文件放在mysql根目录 ...

  6. WebAPI 消息处理器

    由上图可以看出消息处理器的使用场合和使用方法. 使用场合: HttpServer 得到请求时. public static class WebApiConfig { public static voi ...

  7. Php.ini 文件位置在哪里,怎么找到 php.ini

    Php.ini 文件不是经常用到的,突然有一天,你需要修改它了,却不知道他躲在哪里,怎么破? 一般情况下,它会呆在php的安装目录里. 方法/步骤   1 在你自己的网站目录里,新建一个php文件,写 ...

  8. mac 系统中vim安装ctags插件

    1,mac自带的ctags程序不是exuberant ctags, 所以使用时会出现问题,所以要重新安装一个: brew install exuberant ctags 安装完, which ctag ...

  9. <第一次买基金就赚钱>读书笔记

    基金,是指专门用于某种特定目的的并进行独立核算的资金 基金的开放日指基金契约规定的投资者可以在销售网点办理基金申购.赎回交易业务的日期 基金资产总值是指一个基金所拥有的资产(包括现金.股票.债券和其他 ...

  10. Shuffle机制

    一个map task处理一个切片Split,切片是一个范围的数据,和blocksize大小没有必然关系. 1.每个map有一个环形内存缓冲区,用于存储任务的输出.默认大小100MB(io.sort.m ...