PHP laravel缓存cache机制详解

本篇文章给大家带来了关于laravel的相关知识,其中主要介绍了关于laravel中的cache为我们提供了三种缓存机制:redis,memcache,以及框架的文件缓存的相关内容,下面一起来看一下,希望对大家有帮助。

【相关推荐:laravel视频教程】

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

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

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

立即学习“PHP免费学习笔记(深入)”;

一、访问多个缓存存储

使用 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 方法的闭包被执行并且将结果存放到缓存中。

存了个图 存了个图

视频图片解析/字幕/剪辑,视频高清保存/图片源图提取

存了个图 17 查看详情 存了个图

你还可以使用 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框架对文件缓存的操作方法

【相关推荐:laravel视频教程】

以上就是PHP laravel缓存cache机制详解的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/340485.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
2025年1-2月中国汽车进口6万辆 下降46% 德日占比近一半
上一篇 2026年11月8日 14:03:38
DXO公布OPPO Find X8系列电池性能:标准版超越Pro版
下一篇 2025年11月28日 20:34:24

相关推荐

  • 最新的Laravel 9.37发布了,带来这些新变化!

    最新的Laravel 9.37发布了,带来这些新变化!最新的Laravel 9.37发布了,带来这些新变化!最新的Laravel 9.37发布了,带来这些新变化!最新的Laravel 9.37发布了,带来这些新变化!

                                                                                    laravel团队在这周发布了 9.37 版本并且同时在 9.37 与  laravel 9.36 之间发布了一些补丁。本周得发布添加了对使…

    2026年11月8日 • 用户投稿
    000
  • Laravel扩展推荐:导航元素工具“Laravel Navigation”

    Laravel扩展推荐:导航元素工具“Laravel Navigation”Laravel扩展推荐:导航元素工具“Laravel Navigation”Laravel扩展推荐:导航元素工具“Laravel Navigation”Laravel扩展推荐:导航元素工具“Laravel Navigation”

    本篇文章给大家分享一个laravel扩展:laravel navigation包,介绍一下怎么利用laravel navigation 轻松构建站点导航元素,希望对大家有所帮助! Laravel Navigation 是 Spatie 的一个包,用于管理 Laravel 应用程序中的菜单、面包屑和其…

    2026年11月8日 • 用户投稿
    200
  • laravel9 和 laravels 性能大比拼!

    laravel9 和 laravels 性能大比拼!laravel9 和 laravels 性能大比拼!laravel9 和 laravels 性能大比拼!laravel9 和 laravels 性能大比拼!

    前言:最近想使用 swoole 试试 websocket, 正好安装测试下 laravel 和 swoole 性能,不知道是不是 laravel9 性能优化的好,最后压测结果和 laravels 的差不多~ laradock 安装 swoole 动手操作后遇到问题: 因为原先的 PHP 版本是 7.…

    2026年11月8日 • 用户投稿
    000
  • 尝试怎么将Laravel改成Swoole版

    本篇文章给大家laravel和swoole的相关知识,主要内容是教大家怎么将laravel改成swoole版(尝试学习,不建议更改现有项目),下面一起来看看吧,希望对大家有所帮助! 前言 不建议生产环境使用 创建一个新的 laravel 项目 laravel new swoole-laravel 将…

    2026年11月8日
    000
  • Laravel怎么优化性能?18个优化必备知识分享

    Laravel怎么优化性能?18个优化必备知识分享Laravel怎么优化性能?18个优化必备知识分享Laravel怎么优化性能?18个优化必备知识分享Laravel怎么优化性能?18个优化必备知识分享

    Laravel 是一个流行的开源 PHP 框架,以其强大的安全性和简单而复杂的编码架构而闻名。它是构建能够推动收入和推动业务发展的尖端 Web 应用程序的绝佳选择。 如今,没有一个 PHP 开发人员不受 Laravel 的影响。他们要么是喜欢 Laravel 提供的快速开发的初级或中级开发人员,要么…

    2026年11月8日 • 用户投稿
    300
  • 如何通过Laravel实现Web推送通知?使用Composer可以轻松搞定!

    可以通过以下地址学习 Composer:学习地址 在开发一个需要实时通知用户的应用时,我遇到了一个问题:如何在不打扰用户的前提下,及时将重要信息推送给他们?经过一番研究和尝试,我发现使用 laravel 结合 web 推送通知是一个理想的解决方案。然而,实现这一功能并不简单,直到我找到了 larav…

    2026年11月8日
    000
  • 如何解决Laravel大文件上传问题?使用pion/laravel-chunk-upload可以!

    可以通过一下地址学习composer:学习地址 在开发一个允许用户上传大文件的laravel项目时,我遇到了一个常见的问题:上传大文件时,常常会导致内存溢出或超时错误。这不仅影响用户体验,还可能导致系统崩溃。经过一番探索,我发现了一个非常有用的工具:pion/laravel-chunk-upload…

    2026年11月8日
    900
  • 如何在VSCode中配置Laravel API跨域支持 Laravel接口开发CORS中间件设置

    如何在VSCode中配置Laravel API跨域支持 Laravel接口开发CORS中间件设置如何在VSCode中配置Laravel API跨域支持 Laravel接口开发CORS中间件设置如何在VSCode中配置Laravel API跨域支持 Laravel接口开发CORS中间件设置如何在VSCode中配置Laravel API跨域支持 Laravel接口开发CORS中间件设置

    在vscode中配置laravel api的跨域支持,核心在于laravel项目的cors设置,而非vscode本身。1. 安装fruitcake/laravel-cors包:使用composer require fruitcake/laravel-cors;2. 注册cors中间件:可在kerne…

    2026年11月8日 • 用户投稿
    100
  • 如何解决Laravel项目中的枚举问题?使用spatie/laravel-enum可以!

    可以通过一下地址学习composer:学习地址 在开发laravel项目时,我经常会遇到需要使用枚举的情况。例如,在处理订单状态、用户角色等场景中,枚举可以帮助我们更好地管理和使用这些状态。然而,传统的枚举处理方式往往不够灵活,导致代码冗余和维护困难。最近,我找到了一个非常棒的解决方案——spati…

    2026年11月8日
    100
  • 浅析Laravel中存储库模式(Repository)的优点

    浅析Laravel中存储库模式(Repository)的优点浅析Laravel中存储库模式(Repository)的优点浅析Laravel中存储库模式(Repository)的优点浅析Laravel中存储库模式(Repository)的优点

    为什么要在 laravel 中使用存储库模式(repository)?下面本篇文章给大家介绍一下使用存储库模式的优点,希望对大家有所帮助! 1. Laravel中的存储库模式2. 为什么要在 Laravel 中使用存储库模式(Repository)? 在之前的文章中,我解释了什么是存储库模式,它与A…

    2026年11月8日 • 用户投稿
    500
  • 如何解决Laravel中的N+1查询问题?使用beyondcode/laravel-query-detector可以!

    可以通过以下地址学习 Composer:学习地址 在开发 laravel 应用的过程中,性能优化是一个关键问题。最近我在一个项目中遇到了 n+1 查询问题,这是一个常见的性能瓶颈,导致我的应用在处理数据时执行了大量不必要的查询,严重影响了用户体验。我尝试了多种方法来解决这个问题,但效果不佳。直到我发…

    2026年11月8日
    100
  • 如何解决Laravel项目中OPcache管理问题?使用appstract/laravel-opcache可以!

    在Laravel项目开发过程中,OPcache的管理是一个关键但常常令人头疼的问题。最近我在处理一个项目时,OPcache配置和清理变得异常复杂,导致项目性能优化陷入困境。为了解决这个问题,我探索了多种方法,最终发现了appstract/laravel-opcache这个库,它大大简化了OPcach…

    2026年11月8日
    000
  • 如何解决Laravel项目中的验证码问题?使用mews/captcha可以!

    如何解决Laravel项目中的验证码问题?使用mews/captcha可以!如何解决Laravel项目中的验证码问题?使用mews/captcha可以!如何解决Laravel项目中的验证码问题?使用mews/captcha可以!如何解决Laravel项目中的验证码问题?使用mews/captcha可以!

    可以通过一下地址学习 composer:学习地址 在开发一个 Laravel 项目时,我需要实现一个验证码功能来防止机器人注册和登录。我尝试了手动创建验证码,但发现这不仅耗时,还需要处理许多细节问题,如图像生成、验证逻辑和会话管理。幸运的是,我找到了 mews/captcha 这个库,它为 Lara…

    2026年11月8日 • 用户投稿
    000
  • 15个很棒的Laravel 集合(Collection)方法

    15个很棒的Laravel 集合(Collection)方法15个很棒的Laravel 集合(Collection)方法15个很棒的Laravel 集合(Collection)方法15个很棒的Laravel 集合(Collection)方法

    Laravel Eloquent 通常返回一个集合作为结果,集合包含很多有用的、功能强大的方法。你可以很方便的对集合进行过滤、修改等操作。本次教程就一起来看一看集合的常用方法及功能。 Collection(集合)并不仅限于 eloquent ,也可以单独使用。但 Eloquent 的结果就是一个集合…

    2026年11月8日 • 用户投稿
    200
  • 如何解决Laravel队列作业的速率限制问题?使用spatie/laravel-rate-limited-job-middleware可以!

    可以通过一下地址学习composer:学习地址 在开发一个处理大量数据的laravel应用时,我遇到了一个棘手的问题:队列作业的速率限制。当多个作业同时执行时,某些外部api或服务会因为请求过多而拒绝服务,导致我的作业频繁失败。为了解决这个问题,我尝试了多种方法,最终通过spatie/laravel…

    2026年11月8日
    000
  • 聊聊Laravel中怎么接入workerman

    聊聊Laravel中怎么接入workerman聊聊Laravel中怎么接入workerman聊聊Laravel中怎么接入workerman聊聊Laravel中怎么接入workerman

    laravel+websocket是即时通讯开发必备利器,那么laravel中怎么接入workerman?下面本篇文章给大家介绍一下laravel快速接入websocket的方法,希望对大家有所帮助。 前言:此处,我们采用基于workerman开发的GatewayWorker作为socket的核心组…

    2026年11月8日 • 用户投稿
    100
  • laravel怎么修改.env

    laravel怎么修改.envlaravel怎么修改.envlaravel怎么修改.envlaravel怎么修改.env

    laravel修改.env的方法:1、通过“base_path(‘.env’);”获取env文件的路径;2、通过“function updateEnv($data = array()){}”声明函数;3、通过“$pattern = ‘/([^=]*)=[^n]*/…

    2026年11月8日 • 用户投稿
    200
  • Laravel如何进行自动化测试?PHPUnit和PEST的示例分享

    Laravel如何进行自动化测试?PHPUnit和PEST的示例分享Laravel如何进行自动化测试?PHPUnit和PEST的示例分享Laravel如何进行自动化测试?PHPUnit和PEST的示例分享Laravel如何进行自动化测试?PHPUnit和PEST的示例分享

    laravel如何进行自动化测试?下面本篇文章通过使用 phpunit 和 pest 的简单示例来了解如何在 laravel 中开始测试,希望对大家有所帮助。 在我们谈论任何编程语言的自动化测试或单元测试时,一般有两类人: 那些不编写自动化测试并认为他们在浪费时间的人那些写测试然后无法想象没有他们的…

    2026年11月8日 • 用户投稿
    100
  • 一文详解Laravel中的事件溯源

    一文详解Laravel中的事件溯源一文详解Laravel中的事件溯源一文详解Laravel中的事件溯源一文详解Laravel中的事件溯源

    事件溯源是一个在过去几年 PHP 社区越来越流行的术语,但对很多开发人员来说仍然是个谜。这些问题总是如何以及为什么,当然这是可以理解的。本教程的目的是通过一个实际的方式不仅仅是帮你理解什么是事件溯源,同样也会让你知道什么时候你可能会想使用它。 在传统应用程序中,我们的应用程序状态直接表示在我们所连接…

    2026年11月8日 • 用户投稿
    100
  • 聊聊怎么在大型Laravel项目中组织路由

    聊聊怎么在大型Laravel项目中组织路由聊聊怎么在大型Laravel项目中组织路由聊聊怎么在大型Laravel项目中组织路由聊聊怎么在大型Laravel项目中组织路由

    想象一下一个拥有 100 多个路由的 Laravel 项目,其中包括访客,用户,管理员等分离的模块。你真的要将所有内容写在一个文件中吗?那么如何将它们分组,并且为 URL 添加前缀呢?看看有哪些办法。 1. 分离 WEB 和 API 路由 这个简单,因为 Laravel 已经帮你做了。有如下两个文件…

    2026年11月8日 • 用户投稿
    000

发表回复

登录后才能评论
关注微信