搜索

查看: 3088|回复: 11

[PHP] PHP laravel缓存cache机制详解

[复制链接]
发表于 2023-5-4 17:06:59 | 显示全部楼层 |阅读模式
Editor 2023-5-4 17:06:59 3088 11 看全部
目录
  • 一、访问多个缓存存储
  • 二、从缓存中获取数据
  • 1.获取数据并设置默认值
  • 2.检查缓存项是否存在
  • 3.数值增加/减少
  • 4.获取 & 存储
  • 5.获取 & 删除
  • 三、缓存中存储数据
  • 1.获取存储数据
  • 2.缓存不存在时存储数据
  • 3.永久存储数据
  • 四、从缓存中移除数据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缓存内容请搜索知鸟论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持知鸟论坛
  • 知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-28 16:44:52 | 显示全部楼层
    贰十岁装成熟装s 2023-6-28 16:44:52 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 17:37:25 | 显示全部楼层
    墙和鸡蛋 2023-6-29 17:37:25 看全部
    楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 17:49:44 | 显示全部楼层
    戏做顿 2023-6-29 17:49:44 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 20:55:37 | 显示全部楼层
    知足常乐77 2023-6-29 20:55:37 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 21:47:32 | 显示全部楼层
    123456823 2023-6-29 21:47:32 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 21:57:38 | 显示全部楼层
    胡37 2023-6-29 21:57:38 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 23:10:36 | 显示全部楼层
    李志敏 2023-6-29 23:10:36 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-29 23:41:37 | 显示全部楼层
    无人岛屿颈 2023-6-29 23:41:37 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    发表于 2023-6-30 02:10:51 | 显示全部楼层
    落败的青春阳落s 2023-6-30 02:10:51 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    知鸟论坛永久地址发布页:www.zn60.me
    回复

    使用道具 举报

    • 您可能感兴趣
    点击右侧快捷回复 【请勿灌水】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| SiteMap| 小黑屋| 赞兔论坛
    联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表