laravel为不同的缓存系统提供了统一的API(在框架中的写法)。缓存配置位于config/cache.php。在该文件中你可以指定在应用中默认使用哪个缓存驱动。laravel目前支持主流的缓存后端如Memcached和Redis等。
主要方法:
Cache::put();
Cache::get();
Cache::add();
Cache::pull();
Cache::forever();
Cache::forget();
Cache::has();
系统默认是使用文件缓存,其缓存文件存储位置位于(storage/framework/cache/data)
设置路由:
/test14
创建方法test14
在控制器中先引入:
1、设置缓存
语法:Cache::put(‘key’,‘value’,$minutes);
Key:键
Value:值
$minutes:有效期,单位是分钟
注意:如果该键已经存在,则直接覆盖原来的值,有效期必须设置,单位是分钟
1590415203:表示该缓存项的过期时间的时间戳
s:表示内容是字符串
6:表示内容的长度
最后的就是存储的内容
语法:Cache::add(‘key’,‘value’,$minutes);
Key:键
Value:值
$minutes:有效期,单位是分钟
add方法只会在缓存项不存在的情况的下添加数据到缓存,日过数据被成功添加到缓存返回true,否则,返回false;(并不会覆盖之前的数据)
由于之前put已经创建了一个name的缓存,因此使用add再去创建就不会生效
永久存储数据
forever方法用于持久化存储数据到缓存,这些值必须通过forget方法手动从缓存中移除;
Cache::forever(‘key’,‘value’);永久存储并不是真的永久,只不过其截至的时间是比较大的值(到2286年)
设置操作:
2、获取缓存数据
Cache门面的get方法用于从缓存中获取缓存项,如果缓存项不存在,则返回null。如果需要的话你可以传递第二个参数到get方法指定缓存项不存在时返回的自定义默认值:
$value=Cache::get(‘key’);获取指定的key值
$value=Cache::get(‘key’,‘default’);获取指定的key值,如果不存在,则使用默认值
可以传递一个匿名函数作为默认值,如果缓存项不存在的话闭包的结果将会被返回。传递匿名函数允许你可以从数据库或其他外部服务获取默认值:
$value=Cache::get(‘key’,function(){
return DB::table(…)->get();
});
检查缓存项是否存在
has方法用于判断缓存项是否存在:
if(Cache::has(‘key’)){
//…
}
3、删除缓存数据
语法:
$value=Cache::pull(‘key’);从缓存中获取缓存项然后删除,如果缓存项不存在的话返回null,一般设置一次性存储的数据
Cache::forget(‘key’);使用forget方法从缓存中移除缓存项数据
Cache::flush();使用flush方法清除所有缓存;并且删除对应的目录
4、缓存数值增加/减少(了解)
increment和deincrement方法课用于调整缓存中的整形数值。这两个方法都可以接收第二参数来指明缓存项数值增加和减少的数目:一般会用做计数器
Cache::increment(‘key’);
Cache::increment(‘key’,
a
m
o
u
n
t
)
;
C
a
c
h
e
:
:
d
e
c
r
e
m
e
n
t
(
′
k
e
y
′
)
;
C
a
c
h
e
:
:
d
e
c
r
e
m
e
n
t
(
′
k
e
y
′
,
amount); Cache::decrement('key'); Cache::decrement('key',
amount);Cache::decrement(′key′);Cache::decrement(′key′,amount);
如果用计数器,则在初始化的时候不能使用put和forever,因为这2个方法都会重复的初始化计数器
5、获取并存储【重点】access_token 2000次
有时候你可能想要获取缓存项,但如果请求的缓存项不存在时给它存储一个默认值。例如,你可能想要从缓存中获取所有用户,或者如果它们不存在的话,从数据库获取它们并将其添加到缓存中,你可以通过使用 Cache::remember 方法实现:
$value = Cache::remember(‘key’, $minutes, function() {
return DB::table(‘users’)->get(); //获取方式
});
如果缓存项不存在,传递给 remember 方法的闭包被执行并且将结果存放到缓存中。
如果获取users值是不存在,则可以通过后续的回调代码去执行对应的操作获取其值,并返回,同时会设置一个指定有效期的缓存,方便下次直接使用。比较典型的操作就是在获取微信的accesstoken的时候可以使用。原因是accesstoken本身一天只有2000次的配额,而其有7200s的有效期,在有效期内可以不用去刷新请求。
Demo代码:
还可以联合 remember 和 forever 方法:
$value = Cache::rememberForever(‘users’, function() {
return Member::all();
});