Yii2.0数据库缓存依赖发布的使用理解
对于产品中经常需要生成一些缓存类的东西,比如系统基础配置,商品分类等,每次修改调整后都要手动进行缓存发布,是不是非常麻烦!这时候Yii2.0的缓存依赖发布就起到至关重要的作用了!现将主要的使用流程介绍如下:
1、在需要缓存依赖发布的数据表新增一个update_time字段,每次添加、修改记录后都会相应改变update_time的值:

2、保证需要缓存依赖发布的数据表每次保存(包括更新操作)都能更新update_time的值:
// 所有表model继承的基础BaseModel.php
/**
* @name 重写Yii2.0 beforeSave方法,达到自动更新缓存字段update_time的目的
* @author TestMe
* @date 2016-12-06
* @see \yii\db\BaseActiveRecord::beforeSave($insert)
*/
public function beforeSave($insert)
{
// 定义需要设置依赖缓存的表
$cacheTable = [
SysConfig::tableName(),
SysCodeDetail::tableName(),
SysMenu::tableName(),
]; $cacheTable = array_flip($cacheTable);
if (array_key_exists($this->tableName(), $cacheTable) && $this->hasAttribute('update_time')) {
$this->setAttribute('update_time', time());
} return parent::beforeSave($insert);
}
3、设置数据库缓存依赖:
// 所有表model继承的基础BaseModel.php
/**
* @name 获取缓存数据库依赖
* @author testMe
* @date 2016-12-06
* @param array $params 缓存依赖参数
* @example
* 1.请检查使用model对应表是否有update_time字段
* 2.对应使用model请继承BaseModel
* 3.调用BaseModel的getCacheDbDependency()方法
*/
public static function getCacheDbDependency($params = [])
{
// 缓存依赖sql
$dbDependencySql = self::find()->select('max(update_time)')
->where('deleted=0')
->createCommand()
->sql; // 设置缓存依赖
$dbDependency = new DbDependency();
$dbDependency->db = Yii::$app->components['db'];
$dbDependency->sql = $dbDependencySql;
$dbDependency->params = $params; return $dbDependency;
}
4、发布缓存时使用:
// 获取缓存依赖
$dbDependency = SysCodeDetail::getCacheDbDependency();
$cache = Yii::$app->cache;
// 更新缓存文件
$result = $cache->set('SysCodeEnum', SysCode::$_enum, 0, $dbDependency);
if (!$result) {
return false;
}
Yii2.0数据库缓存依赖发布的使用理解的更多相关文章
- ASP.NET缓存全解析6:数据库缓存依赖 转自网络原文作者李天平
更多的时候,我们的服务器性能损耗还是在查询数据库的时候,所以对数据库的缓存还是显得特别重要,上面几种方式都可以实现部分数据缓存功能.但问题是我们的数据有时候是在变化的,这样用户可能在缓存期间查询的数据 ...
- (转)ASP.NET缓存全解析6:数据库缓存依赖
ASP.NET缓存全解析文章索引 ASP.NET缓存全解析1:缓存的概述 ASP.NET缓存全解析2:页面输出缓存 ASP.NET缓存全解析3:页面局部缓存 ASP.NET缓存全解析4:应用程序数据缓 ...
- Asp.net数据库缓存依赖
Asp.net数据库缓存依赖 更多的时候,我们的服务器性能损耗还是在查询数据库的时候,所以对数据库的缓存还是显得特别重要,上面几种方式都可以实现部分数据缓存功能.但问题是我们的数据有时候是在变化的,这 ...
- Asp.net mvc+EF+Sql Server2008数据库缓存依赖
1.开启数据库缓存依赖功能(开启对数据库中表Article和ArticleType的缓存) (注:)如果要配置SqlCacheDependency,则需要以命令行的方式执行. aspnet_regsq ...
- c# 数据库缓存依赖
1.为缓存依赖项启动通知数据库 在vs开发人员命令提示中运行(切换到aspnet_regsql.exe所在目录,示例目录:C:\Windows\Microsoft.NET\Framework64\v4 ...
- ASP.NET 数据库缓存依赖
By Peter A. Bromberg, Ph.D. 在ASP.NET中,Cache类最酷的特点是它能根据各种依赖来良好的控制自己的行为.以文件为基础的依赖是最有用的,文件依赖项是通过使用 Cach ...
- Yii2.0 数据库查询 [ 2.0 版本 ]
下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作 User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的 ...
- yii2.0数据库查询修改等方法
yii2.0学习有一段时间了,给大家分享一下一些简单的查询等如何操作. 查询:(这里最前面的Test是引用的模型名) Test::find()->all(); 此方法返回所有数据: Tes ...
- yii2.0 Cache缓存
1.控制器中CacheDemoController.php 1 <?php 2 /** 3 * Created by PhpStorm. 4 * User: liangzi 5 * Date: ...
随机推荐
- why std::stack has separate top() and pop()
SGI explanation: http://www.sgi.com/tech/stl/stack.html One might wonder why pop() returns void, ins ...
- QListWidget笔记
1.头文件:#include <QListWidget> 2.继承自:QListView 3.基本代码: #include "mainwindow.h" #includ ...
- go开发环境搭建及开发工具简介
go语言包的下载地址:https://www.golangtc.com/download 这里以window10的操作系统环境为例 go的开发工具下载地址:https://www.golangtc.c ...
- HDU 1556 Color the ball 前缀和+思维
Color the ball N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球 ...
- day01-HTML(1)
一. 常用快捷键 Ctrl+c 复制 Ctrl+v 粘贴 Ctrl+x 剪切 Ctrl+a 全选 Ctrl+s 保存 Ctrl+z 撤销一步 Windows+d 返回桌面 Windows+e 我的电脑 ...
- redis win系统安装并设置开机自启
安装包下载网址 :https://github.com/MSOpenTech/redis/releases 找到最新发布的安装包进行下载 下载完后解压到c盘 打开cmd,并进到redis里面 cd C ...
- 道阻且长 莫失本心(我的OI之旅
道阻且长 莫失本心 今天午睡醒来,发现自己发烧了.尽管穿的很厚,尽管今天的阳光如此明媚.身体还是由内而外地散发着冷意. 期末考已经结束了,接下来又是艰难而难忘的奥赛训练.(要到春节才能放假了 ...
- 初次学习DropWizard框架——解决maven打包时出现没有主清单属性的问题
笔者因为公司的项目需要,开始接触DropWizard框架,照着官网https://www.dropwizard.io/0.9.2/docs/getting-started.html撸了一遍. 工具为I ...
- mac下配置php+mysql+nginx遇到的问题
1.mysql:没有useradd和groupadd命令,好在原来的/etc/passwd有了mysql,www用户,/etc/group下也有了mysql,www用户组 2.nginx:编译ngin ...
- 实例/静态工厂方法得到bean
<bean id="a" class="com.yundaex.wms.config.TestBeanChild" /> <bean id=& ...