Laravel之缓存
2024-09-26 23:02:30
一.默认缓存的配置
缓存配置位于config/cache.php,你可以使用memcache,redis,数据库缓存,文件缓存等.默认是文件缓存 二.缓存获取 1.获取
$value = Cache::get('key');
// 默认值
$value = Cache::get('key','default');
// 访问多个缓存存储
$value = Cache::store('file')->get('foo');
Cache::store('redis')->put('bar', 'baz', 10); // 传递一个闭包,如果数据不存在
$user = Cache::get('user1', function() {
return User::where('id', 1)->select('name')->first()->name;
}); 2.检查缓存是否存在
if (Cache::has('key')) {
//
} 三.缓存写/更新 1.写/更新
a.put,无论缓存是否存在,均写入或者更新
Cache::put('key', 'value', $minutes);//第三个参数为缓存多少分钟
除了传递缓存项失效时间,你还可以传递一个代表缓存项有效时间的PHP Datetime 实例:
$expiresAt = Carbon::now()->addMinutes(10);
Cache::put('key', 'value', $expiresAt); b.add 方法只会在缓存项不存在的情况下添加缓存项到缓存,如果缓存项被添加到缓存返回true ,否则,返回
false :
Cache::add('key', 'value', $minutes); 2.forever 方法用于持久化存储缓存项到缓存,即没有过期时间,这些值必须通过forget 方法手动从缓存中移除:
Cache::forever('key', 'value'); 3.增加减少缓存的值
Cache::increment('key');
Cache::increment('key', $amount);
Cache::decrement('key');
Cache::decrement('key', $amount); 4.获取或更新
$value = Cache::remember('users', $minutes, function() {
return DB::table('users')->get();
}); 如果缓存项不存在,传递给remember 方法的闭包被执行并且将结果存放到缓存中。 你还可以联合remember 和forever 方法:
$value = Cache::rememberForever('users', function() {
return DB::table('users')->get();}); 5.获取缓存后删除
$value = Cache::pull('key'); 四.删除 1.删除单个
Cache::forget('key'); 2.清空全部
Cache::flush(); 五.缓存标签
缓存标签不支持file或database缓存驱动.memcache等内存缓存通常比较适合做缓存,因为它们有有过期时间,可以被自动过期删除. 1.存储
缓存标签允许你给相关的缓存项打上同一个标签,然后可以输出被分配同一个标签的所有缓存值。你可以通过传递一个有序的标签名数组来访问被打上标签的缓存。例如,让我们访问一个被打上标签的缓存并将其值放到缓存中:
Cache::tags(['people', 'artists'])->put('John', $john, $minutes);
Cache::tags(['people', 'authors'])->put('Anne', $anne, $minutes); 2.获取
$john = Cache::tags(['people', 'artists'])->get('John');
$anne = Cache::tags(['people', 'authors'])->get('Anne'); 3.移除
Cache::tags(['people', 'authors'])->flush();//移除被打上people,authors标签的缓存,或者,Anne 和 John都会从缓存中移除:
Cache::tags('authors')->flush(); //移除被打上 authors标签的缓存,所以Anne会被移除,而John不会: 六.缓存事件
要在每次缓存操作时执行相应程序,你可以监听缓存触发的事件,通常,你可以将这些缓存处理器代码放到EventServiceProvider的boot方法中: /**
* 注册应用任意其他事件
*
* @param \Illuminate\Contracts\Events\Dispatcher $events
* @return void
*/
public function boot(DispatcherContract $events){
parent::boot($events); $events->listen('cache.hit', function ($key, $value) {
//
}); $events->listen('cache.missed', function ($key) {
//
}); $events->listen('cache.write', function ($key, $value, $minutes) {
//
}); $events->listen('cache.delete', function ($key) {
//
});
}
最新文章
- HttpGet 请求(带参数)
- 移动APP的开发需求分析
- JS-字符串操作-替换
- OpenGL基础知识
- 关于php的两个符号@和$
- Unity5UGUI 官方教程学习笔记(四)UI Image
- SQL Server:错误处理及事务控制
- git 查看当前与上一次version的差异
- apidoc快速生成在线文档,apidoc生成静态文件的生成规则以及原理分析
- JS声明变量的写法
- ubuntu14.4 分辨率偏低
- Flask自带的常用组件介绍
- PythonStudy——数据类型转化 Data type conversion
- Linux下启动停止查看杀死Tomcat进程
- Java——多线程面试问题
- statik golang 静态资源嵌入二进制文件工具使用(docker 构建)
- mysql 执行 sql 语句提示Parameter '@XXX' must be defined
- mysql 数据操作 多表查询 子查询 带比较运算符的子查询
- Linux启动流程(CentOS6)
- UNIX网络编程读书笔记:TCP输出、UDP输出和SCTP输出
热门文章
- 关于each()、find()、filter()遍历节点的操作方法
- SPI总线介绍
- glxgears刷新只有60FPS解决办法
- Java反射常用API汇总
- poj 1106(半圆围绕圆心旋转能够覆盖平面内最多的点)
- Android 利用 AsyncTask 异步读取网络图片
- 推荐一本迷你中文书《JavaScript Promise迷你书(中文版)》
- [BZOJ1834][ZJOI2010]network 网络扩容 最大流+费用流
- ASP.NET增加微信公众号功能
- MVC5 ModelState