PHP laravel缓存cache机制详解

 更新时间:2022年10月24日 11:41:26   作者:camellia  
Laravel中的cache为我们提供了三种缓存机制:Redis,memcache,以及框架的文件缓存。本文主要和大家聊聊cache中的文件缓存,感兴趣的小伙伴可以跟随小编一起学习一下

Laravel中的cache为我们提供了三种缓存机制。

Redis,memcache,以及框架的文件缓存。

这里主要看的是cache中的文件缓存。

一、访问多个缓存存储

使用 Cache 门面,你可以使用 store 方法访问不同的缓存存储器,传入 store 方法的键就是 cache 配置文件中 stores 配置数组里列出的相应的存储器:

$value = Cache::store('file')->get('foo');
Cache::store('redis')->put('bar', 'baz', 600);  // 10分钟

二、从缓存中获取数据

1.获取数据并设置默认值

(1):正常取值

$value = Cache::get('key');

(2):如果不存在,附默认值

$value = Cache::get('key', 'default');

(3):使用闭包操作,附默认值

$value = Cache::get('key', function() {
    return DB::table(...)->get();
});

2.检查缓存项是否存在

has 方法用于判断缓存项是否存在,如果值为 null 或 false 该方法会返回 false:

if (Cache::has('key')) {
    //
}

3.数值增加/减少

increment 和 decrement 方法可用于调整缓存中的整型数值。这两个方法都可以接收第二个参数来指明缓存项数值增加和减少的数目:

Cache::increment('key');
Cache::increment('key', $amount);
Cache::decrement('key');
Cache::decrement('key', $amount);

4.获取 & 存储

有时候你可能想要获取缓存项,但如果请求的缓存项不存在时给它存储一个默认值。例如,你可能想要从缓存中获取所有用户,或者如果它们不存在的话,从数据库获取它们并将其添加到缓存中,你可以通过使用 Cache::remember 方法实现:

$value = Cache::remember('users', $seconds, function() {
    return DB::table('users')->get();
});

如果缓存项不存在,传递给 remember 方法的闭包被执行并且将结果存放到缓存中。

你还可以使用 rememberForever 方法从缓存中获取数据或者将其永久存储起来:

$value = Cache::rememberForever('users', function() {
    return DB::table('users')->get();
});

5.获取 & 删除

如果你需要从缓存中获取缓存项然后删除,你可以使用 pull 方法,和 get 方法一样,如果缓存项不存在的话返回 null:

$value = Cache::pull('key');

三、缓存中存储数据

1.获取存储数据

你可以使用 Cache 门面上的 put 方法在缓存中存储数据。当你在缓存中存储数据的时候,需要指定数据被缓存的时间(秒数):

Cache::put('key', 'value', $seconds);

如果没有传递缓存时间到 put 方法,则缓存项永久有效:

Cache::put('key', 'value');

除了传递缓存项失效时间,你还可以传递一个代表缓存项有效时间的 PHP Datetime 实例:

$expiresAt = Carbon::now()->addMinutes(10);
Cache::put('key', 'value', $expiresAt);

2.缓存不存在时存储数据

add 方法只会在缓存项不存在的情况下添加数据到缓存,如果数据被成功添加到缓存返回 true,否则,返回 false:

Cache::add('key', 'value', $seconds);

3.永久存储数据

forever 方法用于持久化存储数据到缓存,这些值必须通过 forget 方法手动从缓存中移除:

Cache::forever('key', 'value');

四、从缓存中移除数据

可以使用 Cache 门面上的 forget 方法从缓存中移除缓存项数据:

Cache::forget('key');

还可以通过设置缓存有效期为 0 或负数来移除缓存项:

Cache::put('key', 'value', 0);
 
Cache::put('key', 'value', -5);

如果要清除所有缓存,可以通过 flush 方法:

Cache::flush();

以上基本上就是laravel框架对文件缓存的操作方法

到此这篇关于PHP laravel缓存cache机制详解的文章就介绍到这了,更多相关PHP laravel缓存内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何用php根据地址获取经纬度

    如何用php根据地址获取经纬度

    这篇文章主要介绍了php根据地址获取经纬度,对地址经纬度感兴趣的同学,可以参考下
    2021-04-04
  • php简单判断文本编码的方法

    php简单判断文本编码的方法

    这篇文章主要介绍了php简单判断文本编码的方法,涉及php数组及iconv方法的相关使用技巧,非常简单实用,需要的朋友可以参考下
    2015-07-07
  • php+xml编程之xpath的应用实例

    php+xml编程之xpath的应用实例

    这篇文章主要介绍了php+xml编程之xpath的应用,实例分析了xpath的功能、定义及使用技巧,需要的朋友可以参考下
    2015-01-01
  • PHP树的深度编历生成迷宫及A*自动寻路算法实例分析

    PHP树的深度编历生成迷宫及A*自动寻路算法实例分析

    这篇文章主要介绍了PHP树的深度编历生成迷宫及A*自动寻路算法,实例分析了php实现A*寻路算法的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • PHP+Ajax实现的检测用户名功能简单示例

    PHP+Ajax实现的检测用户名功能简单示例

    这篇文章主要介绍了PHP+Ajax实现的检测用户名功能,结合简单实例形式分析了php结合ajax基于事件响应动态查询数据库及用户名检测相关操作技巧,需要的朋友可以参考下
    2019-02-02
  • php 保留小数点

    php 保留小数点

    php保留小数点的方法。
    2009-04-04
  • PHP中提问频率最高的11个面试题和答案

    PHP中提问频率最高的11个面试题和答案

    这篇文章主要介绍了PHP中提问频率最高的11个面试题和答案,每个公司都有自己的面试标准,面试和问题是完全取决于你在工作中所扮演的角色,当然也和你的编程技能息息相关,需要的朋友可以参考下
    2014-09-09
  • php中文字符串截取方法实例总结

    php中文字符串截取方法实例总结

    这篇文章主要介绍了php中文字符串截取方法实例,针对常见的字符串截取函数进行了分析比对,并给出了一个完整实例来解决PHP中文字符串截取问题,需要的朋友可以参考下
    2014-09-09
  • php中文语义分析实现方法示例

    php中文语义分析实现方法示例

    这篇文章主要介绍了php中文语义分析实现方法,结合实例形式分析了PHP基于BosonNLP扩展实现中文语义分析的具体操作步骤与相关实现技巧,需要的朋友可以参考下
    2019-09-09
  • php curl_init函数用法

    php curl_init函数用法

    使用PHP的cURL库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了
    2014-01-01

最新评论