laravel进阶--5 缓存

33 篇文章 0 订阅

在缓存中存储数据

 

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

Cache::put('key', 'value', $minutes);
 除了传递缓存项失效时间,你还可以传递一个代表缓存项有效时间的 PHP Datetime 实例:
 $expiresAt = Carbon::now()->addMinutes(10);
 Cache::put('key', 'value', $expiresAt);

 

缓存不存在时存储数据

 

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

Cache::add('key', 'value', $minutes);
 永久存储数据 forever 方法用于持久化存储数据到缓存,这些值必须通过 forget 方法手动从缓存中移除: Cache::forever('key', 'value');

 

注:如果你使用的是 Memcached 驱动,当缓存数据达到上限后永久存储的数据就会被移除。

 

 

从缓存中移除数据

 

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

 

Cache::forget('key'); 
还可以使用 flush 方法清除所有缓存:
 Cache::flush();

 

注:清除缓存并不管什么缓存键前缀,而是从缓存系统中移除所有数据,所以在使用这个方法时如果其他应用与本应用有共享缓存时需要格外注意。

 

缓存辅助函数

 

除了使用 Cache 门面或缓存契约,还可以使用全局的 cache 函数来通过缓存获取和存储数据。当带有一个字符串参数的 cache 函数被调用时,会返回给定键对应的缓存值(取值):

 

$value = cache('key'); 
如果你提供了键值对数组和一个过期时间给该函数,则会在指定的有效期内存储缓存值(存储): cache(['key' => 'value'], $minutes); 
cache(['key' => 'value'], Carbon::now()->addSeconds(10));

 

测试调用 cache 函数时,可以像测试门面一样使用 Cache::shouldReceive 方法。

 

 

从缓存中获取数据

 

Cache 门面的 get 方法用于从缓存中获取缓存项,如果缓存项不存在,返回 null。如果需要的话你可以传递第二个参数到 get 方法指定缓存项不存在时返回的自定义默认值:

 

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

 

你甚至可以传递一个闭包作为默认值,如果缓存项不存在的话闭包的结果将会被返回。传递闭包允许你可以从数据库或其它外部服务获取默认值:

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

 

检查缓存项是否存在

 

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

 

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

 

数值增加/减少

 

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

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

 

获取&存储

 

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

 

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

 

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

 

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

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

 

获取&删除

 

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

 

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!关于 Laravel进阶课程和资料,我可以向您推荐一些资源。 1. 官方文档:Laravel 的官方文档是学习和深入了解 Laravel 的最好资源之一。您可以在 Laravel 官方网站(https://laravel.com/docs)上找到最新的文档,并从基础到高级的各个方面进行学习。 2. Laravel 学院(Laracasts):Laravel 学院是一个非常受欢迎的 Laravel 视频教程网站。它提供了大量的 Laravel 进阶课程,涵盖了许多主题,包括数据库、认证、缓存、队列等等。您可以通过订阅他们的服务(https://laracasts.com/)来获得无限访问权限。 3. Laravel News:Laravel News 是一个社区驱动的 Laravel 资讯网站,提供了有关 Laravel 的最新消息、教程和工具等内容。您可以参考他们的网站(https://laravel-news.com/)以获取更多关于 Laravel进阶资料。 4. Laravel 扩展包:Laravel 生态系统中有很多优秀的扩展包,通过使用这些扩展包可以提高您的开发效率和功能。您可以通过 Laravel 官方网站的扩展包页面(https://packagist.org/)来查找并了解这些扩展包。 5. Laravel 论坛:Laravel 论坛是一个讨论 Laravel 相关话题的社区,您可以在这里与其他 Laravel 开发者交流和分享经验。Laravel China(https://learnku.com/laravel)是一个中文的 Laravel 论坛,您可以在这里寻求帮助、提问问题以及获取进阶资料。 希望这些资源能帮助到您的学习和进阶!如果您有任何其他问题,请随时告诉我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值