Laravel 为不同的缓存系统提供了统一的 API。缓存配置位于config/cache.php。在该文件中你可以指定在应用中默认使用哪个缓存驱动。Laravel 目前支持主流的缓存后端如Memcached 和 Redis 等。
主要方法:
系统默认是使用文件缓存,其缓存文件存储的位置位于(storage/framework/cache/data):
语法:Cache::put('key', 'value', $minutes);
注意:put如果该键已经存在,则直接覆盖原来的值,有效期必须设置,单位是分钟
语法:Cache::add('key', 'value', $minutes);
add 方法只会在缓存项不存在的情况下添加数据到缓存,如果数据被成功添加到缓存返回 true,否则,返回false:
注意:如果缓存的过期时间没有传递给
put
方法, 则缓存将永久有效
语法:Cache::forever('key', 'value');
forever 方法可用于持久化将数据存储到缓存中。因为这些数据不会过期,所以必须通过 forget 方法从缓存中手动删除它们
Cache
Facade 的 get
方法用于从缓存中获取数据。如果该数据在缓存中不存在,那么该方法将返回 null
。。如果需要的话你可以传递第二个参数到 get 方法指定缓存项不存在时返回的自定义默认值:
// 获取指定的key值
$value = Cache::get('key');
// 获取指定的key值,如果不存在,则使用默认值
$value = Cache::get('key', 'default');
你甚至可以传递一个 Closure
作为默认值。如果指定的数据在缓存中不存在,将返回 Closure
的结果。传递闭包的方法允许你从数据库或其他外部服务中获取默认值
$value = Cache::get('key', function () {
return DB::table(...)->get();
});
检查缓存项是否存在
has
方法可以用于判断缓存项是否存在。如果值为 null,则该方法将会返回 false
:
if (Cache::has('key')) {
//
}
你可以使用 forget
方法从缓存中删除这些数据:
Cache::forget('key');
你也可以通过提供零或者负的 TTL 值来删除这些数据:
Cache::put('key', 'value', 0);
Cache::put('key', 'value', -5);
你可以使用 flush
方法清空所有的缓存:并且删除对应的目录
Cache::flush();
注意:清空缓存的方法并不会考虑缓存前缀,会将缓存中的所有内容删除。因此在清除与其它应用程序共享的缓存时,请慎重考虑。
如果你需要从缓存中获取到数据之后再删除它,你可以使用 pull
方法。和 get
方法一样,如果缓存不存在,则返回 null
:一般设置一次性的存储的数据
$value = Cache::pull('key');
increment
和 decrement
方法可以用来调整缓存中整数项的值。这两个方法都可以传入第二个可选参数,这个参数用来指明要递增或递减的数量:一般会用作计数器。
// 递增
Cache::increment('key');
Cache::increment('key', $amount);
// 递减
Cache::decrement('key');
Cache::decrement('key', $amount);
有时你可能想从缓存中获取一个数据,而当请求的缓存项不存在时,程序能为你存储一个默认值。例如,你可能想从缓存中获取所有用户,当缓存中不存在这些用户时,程序将从数据库将这些用户取出并放入缓存。你可以使用 Cache::remember 方法来实现:
$value = Cache::remember('users', seconds,, function () {
return DB::table('users')->get();
});
如果缓存中不存在你想要的数据时,则传递给 remember
方法的 闭包
将被执行,然后将其结果返回并放置到缓存中。同时会设置一个指定有效期的缓存,方便下次直接使用。比较典型的操作就是在获取微信的accesstoken的时候可以使用。原因是accesstoken本身一天只有2000次的配额,而其有7200s的有效期,在有效期内可以不用去刷新请求。
还可以联合 remember 和 forever 方法,可以使用 rememberForever
方法从缓存中获取数据或者永久存储它:
$value = Cache::rememberForever('users', function () {
return DB::table('users')->get();
});
①创建需要的路由
②创建test19方法实现相关代码操作
如果需要使用cache提供的方法,则需要先引入
经常使用的:add/put、get、has、forget、flush、remember。