博主信息
 一纸荒凉* Armani
博文
129
粉丝
4
评论
5
访问量
48973
积分:0
P豆:318
博文分类
html3篇
CSS11篇
JavaScript16篇
jQuery2篇
Vue11篇
PHP20篇
ThinkPHP33篇
React0篇
other5篇
Laravel21篇
小程序5篇

21.)PHPWeb开发框架~laravel中缓存系统Cache的使用及配置操作

2021年06月23日 22:38:01阅读数:489博客 /  一纸荒凉* Armani/ Laravel

缓存系统

Laravel 为不同的缓存系统提供了统一的 API。缓存配置位于config/cache.php。在该文件中你可以指定在应用中默认使用哪个缓存驱动。Laravel 目前支持主流的缓存后端如Memcached 和 Redis 等。

主要方法:

  • Cache::put() 在缓存中存储数据
  • Cache::add() 只存储没有的数据
  • Cache::get() 从缓存中获取数据
  • Cache::forever() 数据永久存储
  • Cache::pull() 获取和删除
  • Cache::remember() 获取和存储
  • Cache::increment() 递增与递减值
  • Cache::forget() 从缓存中删除数据
  • Cache::has() 检查缓存项是否存在

系统默认是使用文件缓存,其缓存文件存储的位置位于(storage/framework/cache/data):

img

1、设置缓存数据

  1. 语法:Cache::put('key', 'value', $minutes);

注意:put如果该键已经存在,则直接覆盖原来的值,有效期必须设置,单位是分钟

  1. 语法:Cache::add('key', 'value', $minutes);

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

注意:如果缓存的过期时间没有传递给 put 方法, 则缓存将永久有效

  1. 语法:Cache::forever('key', 'value');

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

2、获取缓存数据

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

  1. // 获取指定的key值
  2. $value = Cache::get('key');
  3. // 获取指定的key值,如果不存在,则使用默认值
  4. $value = Cache::get('key', 'default');

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

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

检查缓存项是否存在

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

  1. if (Cache::has('key')) {
  2. //
  3. }

3、删除缓存数据

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

  1. Cache::forget('key');

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

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

你可以使用 flush 方法清空所有的缓存:并且删除对应的目录

  1. Cache::flush();

注意:清空缓存的方法并不会考虑缓存前缀,会将缓存中的所有内容删除。因此在清除与其它应用程序共享的缓存时,请慎重考虑。

如果你需要从缓存中获取到数据之后再删除它,你可以使用 pull 方法。和 get方法一样,如果缓存不存在,则返回 null一般设置一次性的存储的数据

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

4、缓存递增与递减值

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

  1. // 递增
  2. Cache::increment('key');
  3. Cache::increment('key', $amount);
  4. // 递减
  5. Cache::decrement('key');
  6. Cache::decrement('key', $amount);

5、获取并存储

有时你可能想从缓存中获取一个数据,而当请求的缓存项不存在时,程序能为你存储一个默认值。例如,你可能想从缓存中获取所有用户,当缓存中不存在这些用户时,程序将从数据库将这些用户取出并放入缓存。你可以使用 Cache::remember 方法来实现:

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

如果缓存中不存在你想要的数据时,则传递给 remember 方法的 闭包 将被执行,然后将其结果返回并放置到缓存中。同时会设置一个指定有效期的缓存,方便下次直接使用。比较典型的操作就是在获取微信的accesstoken的时候可以使用。原因是accesstoken本身一天只有2000次的配额,而其有7200s的有效期,在有效期内可以不用去刷新请求。

还可以联合 remember 和 forever 方法,可以使用 rememberForever 方法从缓存中获取数据或者永久存储它:

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

①创建需要的路由

img

②创建test19方法实现相关代码操作

如果需要使用cache提供的方法,则需要先引入

img

img

img

img

经常使用的:add/put、get、has、forget、flush、remember

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论