在实际的网站中,访问量大的话就会出现缓存如何处理的这个问题。我之前发布的redis数据库就是专门用于这个的。真的巧,最常用的两种缓存数据库memcche和redis。
YII偏偏选择了memcche。不过没关系,这样又可以学一种常用的缓存数据库了。
1.增删改查
按惯例,数据库的四大操作
//获取缓存组件
$cache = \YII::$app->cache;
//写数据
$cache->add('key1','name');
//修改数据
$cache->set('key1','name1');
//删除数据
$cache->delete('key1');
//清空数据
$cache->flush();
//读数据
print_r($cache->get('key1'));
值得注意的一点是:如果往一个key写两次数据的话,会取第一次的数据。
2.有效期设置
add()和set()的第三个参数是该数据的有效期。
//有效期设置
//$cache->add('key1','name',15);
//$cache->set('key1','name',15);
3.数据缓存依赖
这部分没彻底搞懂,add()和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');
这部分就先到这了,谢谢阅读