Yii2 cache的用法(1)
数据缓存需要缓存组件提供支持,它代表各种缓存存储器, 例如内存,文件,数据库。 '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)的更多相关文章
- Yii2 AR find用法 (2016-05-18 12:06:01)
Yii2 AR find用法 (2016-05-18 12:06:01) 转载▼ User::find()->all(); 返回所有数据 User::findOne($id); ...
- yii2 httpClient的用法
yii2 httpClient的用法示例: <?php /* * @Purpose : yii2 httpClient 请求示例 * @Author : Chrdai * @Time : 201 ...
- Application,Session,Cookie,ViewState,Cache对象用法、作用域的区别
1.Application:用于保存所有用户共用的数据信息.在Asp.Net中类似的配置数据最好保存在Web.config文件中.如果使用Application对象,一个需要考虑的问题是任何写操作都要 ...
- c#Cache的用法
public class Cache { /// <summary> /// 获取数据缓存 /// </summary> /// <param name="ca ...
- .net Cache的用法
HttpContext.Current.Cache 使用方法 .net Cache 怎么使用 /// <summary> /// 简单创建/修改Cache,前提是这个值是字符 ...
- yii2 ActiveRecord常用用法
User::find()->all(); 返回所有数据 User::findOne($id); 返回 主键 id=1 的一条数据 User::find()->where ...
- Yii2常用ActiveRecord用法
1.多表连表查询与对象关联查询 public function getWmsCheck(){ return $this->hasOne(\core\models\WmsCheck::classN ...
- .NET Application,Session,Cookie,ViewState,Cache对象用法
作用域 保存地址 生命周期Application 应用程序 服务器内存 IIS启动Session 整个站点 服务器内存 Session到时 默认20分钟Cashe 应用程序 服务器内存 应用程序的周期 ...
- 细说 ASP.NET Cache 及其高级用法
许多做过程序性能优化的人,或者关注过程程序性能的人,应该都使用过各类缓存技术. 而我今天所说的Cache是专指ASP.NET的Cache,我们可以使用HttpRuntime.Cache访问到的那个Ca ...
随机推荐
- hdu3038(种类并查集,推荐)
题目大意:有n次询问,给出a到b区间的总和,问这n次给出的总和中有几次是和前面已近给出的是矛盾的?? 很有意思的一道题目,要是没有做过种类并查集,我肯定会以为这种题目是线段树题目...... 思路:我 ...
- poj1988(判断一个结点下面有多少个结点,推荐)
题意:有n个元素,开始每个元素自己一栈,有两种操作,将含有元素x的栈放在含有y的栈的顶端,合并为一个栈.第二种操作是询问含有x元素下面有多少个元素. 6 M 1 6 C 1 M 2 4 M 2 6 C ...
- 【C++程序员学 python】python 的文件类型
python的文件类型主要分为3种,分别是源代码.字节代码和优化代码.这些代码都可以直接运行,不需要进行编译或者连接.这正是python语言的特性,python的文件通过python.exe 或pyt ...
- thinkphp继承高级model后的乐观锁运用(测试中)
<?php class IndexAction extends Action { private $d_user; private $user; private $arr; public fun ...
- json数据在前端(javascript)和后端(php)转换
学习目的:前后端数据交换 思路: json数据格式是怎么样? 后端各种语言怎么将自己内容转换成json格式的内容? 前端怎么接收json数据?有几种方式? js中怎么将json数据转换成js中的数 ...
- Sphinx/Coreseek 4.1的安装流程
yum install mysql-devel libxml2-devel expat-devel cd /data/software/ wget http://www.coreseek.cn/upl ...
- <花荣《至尊狐狸》中国股市精英最优套利战术>读书笔记
书在这里 第一定律:博弈分析是一切实战操作的基础,资金的机会利润由主力投机状态决定,资金的风险承受度由投资标的价值底线锁定 第二定律:套利战术应是背景性的.主动性的.互动性的,是最安全最保守的.最明确 ...
- spidev 驱动 probe 获取 dts 节点参数
一. 尝试在 spi 驱动里边读取 设备树里面 节点的信息 // dts 里面的参数配置 503 &spi0 { 504 status = "okay"; 505 pinc ...
- MacBook如何用Parallels Desktop安装windows7/8
虽然MacBook真的很好用,不过在天朝的国情下,有很多软件还是仅支持IE和windows系统下才有.所以有必要为自己的MacBook装一个windows版本的系统,之前试过用Boot Camp来建立 ...
- Centos7下安装运行keepalived
master服务器ip地址:192.168.0.182 slave服务器ip地址:192.168.0.189 虚拟ip(VIP,一个尚未占用的内网ip即可)地址:192.168.0.180 确认使用 ...