Thinkphp在添加、修改、删除数据时,自动更新Cache缓存的方法
2021-03-02 11:58
337 查看
thinkphp使用缓存可以有效提升系统性能,节省数据库操作和内存开支。
简单示例:
<?php use think\Cache; if (Cache::has('user_data')) { $users = Cache::get('user_data') } else { $users = User::where('status', 1)->select(); // 缓存用户数据5分钟 Cache::set('user_data', $users, 300); }
上面的代码还可以简化成:
<?php use think\Cache; $users = Cache::remember('user_data', function(){ return User::where('status', 1)->select(); },300);
问题来了,上述缓存的时间是5分钟,如果在这5分钟内对user用户表执行了添加、修改、删除等操作,你会发现缓存没有发生改变,网站不能及时获取最真实的数据。那应该怎么办呢?
解决方法:
在执行完添加、修改、删除等操作时,调用Cache::clear(),如下:
<?php use think\Cache; public function add(){ try{ User::create([ 'name' => "tom", 'age' => 18 ]); } catch (\Exception $e) { $this->error('添加失败'); } //清理缓存 Cache::clear(); $this->success('添加成功'); }
补充:清除缓存、模版缓存和日志缓存的方法
namespace app\cache\controller; use think\Controller; use think\Cache; //清除模版缓存不删除cache目录; public function clear_sys_cache() { Cache::clear(); $this->success('清除成功', 'Index/index'); } //清除模版缓存但不删除temp目录; public function clear_temp_ahce() { $path = glob(TEMP_PATH . '*.php'); array_map('unlink', $path); //rmdir(TEMP_PATH .'temp/');//删除temp目录 $this->success('清除成功', 'Index/index'); } //清除日志缓存并删出log空目录; public function clear_log_chache() { $path = glob(LOG_PATH . '*'); foreach ($path as $item) { //dump(glob($item .DS. '*.log')); array_map('unlink', glob($item . DS . '*.log')); rmdir($item); } $this->success('清除成功', 'Index/index'); }
相关文章推荐
- ThinkPHP3.2.3 数据添加add()方法 数据修改save()方法 在后台实现数据的添加、修改 删除信息delete() 执行原生sql语句 表单自动验证 create() 方法
- 添加、删除、修改触发器,更新数据放入t_log表
- Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
- thinkPHP的数据添加、修改、删除
- destoon 分类的单函数实现 数据的添加 删除 和 更新 缓存!
- ThinkPHP 2:添加修改删除数据
- php+mysqli预处理技术实现添加、修改及删除多条数据的方法
- thinkphp项目:前端界面中修改数据时自动添加selected 或者 checked
- ADO.NET使用带参数方法实现添加、删除和修改数据
- jdbc与hibernate结合修改子表数据(jdbc删除、hibernate更新/添加)
- php+mysqli预处理技术实现添加、修改及删除多条数据的方法
- thinkphp 在数据库更新(save)的时候,如果字段没有被修改,会更新失败 和数据的自动验证,插入的时候可以自动验证,但更新的时候就不能验证了
- 两张表数据同步 (添加、删除、修改 触发器)
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- 用Nhibernate怎么实现数据的添加、删除、修改简单程序
- 【个人学习笔记10之--数据修改之插入数据,更新数据,删除数据.】
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- 自动获取表格数据添加,修改数据库数据的类
- PROTEL DXP原理图无变化更新PCB时却反复删除添加元器件的处理方法