laravel学习笔记--缓存系统

66 篇文章 4 订阅

缓存系统

配置

Laravel 为各种后端缓存提供了丰富而统一的 API,其缓存配置位于 config/cache.php 文件中。

缓存所存储的目录在storage\framework\cache\data

Laravel 配置为使用 file 缓存驱动,它将序列化的缓存对象存储在文件系统中

获取缓存实例

Illuminate\Contracts\Cache\Factory
Illuminate\Contracts\Cache\Repository 提供了 Laravel 缓存服务的访问机制

不过还有门面模式facade提供的,一般使用门面模式提供的

使用缓存–从缓存中获取数据

$key= Cache::get('key');//获取缓存值
 $value = Cache::get('name', '默认的值');
 //获取缓存值,如果没有这个缓存值,提供一个默认值
 dd($value);

甚至可以传递一个 Closure 作为默认值。如果指定的数据在缓存中不存在,将返回 Closure 的结果。传递闭包的方法允许你从数据库或其他外部服务中获取默认值

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

检查缓存项是否存在
has 方法可以用于判断缓存项是否存在。如果值为 null,则该方法将会返回 false

if (Cache::has('name'))
dd('存在');

递增与递减值

incrementdecrement
方法可以用来调整缓存中整数项的值。这两个方法都可以传入第二个可选参数,这个参数用来指明要递增或递减的数量

递增

$value = Cache::increment('count');
dd($value);

递减

$value = Cache::decrement('count');
 dd($value);

获取缓存,如果缓存不存在,就使用闭包返回的数据–不会缓存

$value = Cache::get('users', function () {
            return 'hello';
        });
        dd($value);
        //如果想要在缓存中获取这个缓存,会获取不到

获取和存储

获取缓存,如果缓存不存在,就使用闭包返回的数据 同时缓存指定时间的数据,时间单位是秒–会缓存
第一个参数是 获取缓存键,第二个参数是缓存有限时间,第三个参数是如果不存在这个缓存,就使用它里面闭包的数据

$value = Cache::remember('users', 30, function () {
            return 'remember';
        });
dd($value);
//如果想要在缓存中去获取这个缓存,是可以获取到的,不过超过时间就会过期

使用 rememberForever 方法从缓存中获取数据或者永久存储它

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

删除缓存

Cache::pull('users');
$value2 = Cache::get('users');

在缓存中存储数据

使用 Cache Facade 的 put 方法将数据存储到缓存中
如果没有给第三个参数传递时间,就会永久存储

Cache::put('key', 'value', 30);
//第一个参数是缓存键,第二个参数是缓存值,第三个参数是缓存时间

只存储没有的数据
add 方法将只存储缓存中不存在的数据。如果存储成功,将返回 true ,否则返回 false
就是说,缓存中如果没有这个数据。它就会执行存储,如果有这个数据,就不会存储了

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

数据永久存储

forever 方法可用于持久化将数据存储到缓存中。因为这些数据不会过期,所以必须通过 forget 方法从缓存中手动删除它们

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

从缓存中删除数据

可以使用 forget 方法从缓存中删除这些数据:

Cache::forget('key');

也可以通过提供零或者负的 TTL 值来删除这些数据

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

清空所有的缓存

Cache::flush();

一个缓存小实例
例如,要获取博客的分类,
如果缓存存在,就不进行缓存,如果不存在,就进行缓存,这样可以适当为服务器减少压力

if (!function_exists('categories')) {
    function categories()
    {
        //使用缓存处理获取分类请求--永久缓存
        $categories = cache()->rememberForever('categories', function () {
            //查询数据库
            $categories = \Illuminate\Support\Facades\DB::table('categories')
                ->pluck('name', 'id');//以id为键,name为值
            return $categories;
        });
        return $categories;
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小信啊啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值