laravel8缓存的基本操作
一、缓存文件默认存放位置
框架运行时缓存的一个缓存文件是存储在storage/framework/cache/data
文件夹里面
配置项 config/cache.php
18行 'default' => env('CACHE_DRIVER', 'file'),
52行 'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache/data'),
],
默认.env文件 CACHE_DRIVER ,没有就是file
config/app.php
200行 'Cache' => Illuminate\Support\Facades\Cache::class,
二、缓存操作(API)
use Cache;
1、设置缓存数据
Cache::put(‘key’,值,分钟)
例子
use Cache;
class UserController extends Controller
{
public function huancun(){
dump(Cache::put('Test','hello',10) );//缓存10分钟
}
}
设置或添加缓存,添加的时候如果key值已有,会覆盖
返回值
:布尔值 true。
不同点:put会覆盖,add不会覆盖
Cache::add(‘key’,值,分钟)
例子
public function huancun(){
dump(Cache::add('Test',666,10) );//10分钟
}
返回值
:布尔值,如果缓存没有这个key的数据那就返回true,已经有key的数据那就返回false
永久缓存 Cache::forever(‘key’,值)
例子
public function huancun(){
dump( Cache::forever('Test',666) );
}
返回值
:布尔值 true,设置或添加缓存,添加的时候如果key值已有,会覆盖。
打开缓存文件查看:
时间戳 类型:值
9999999999i:666;
观察可以看到并不是永久缓存,只是缓存时间很长
2、删除缓存
Cache::forget(‘key’)
例子
public function huancun(){
dump(Cache::forget('Test') );
}
返回值
:布尔值 true 或 false
文件夹不会删
Cache::pull(‘key’)
例子
public function huancun(){
dump(Cache::pull('Test') );
}
文件夹不会删
返回值
:缓存key的值不存在的话返回null,存在删除就返回值
场景
:一次性的缓存数据可以用这个
清空所有缓存 Cache::flush()
例子
public function huancun(){
dump(Cache::flush() );
}
删除所有,文件夹都没了,清空data文件夹
返回值
:布尔值 true
3、获取缓存数据
Cache::get(‘key’)
例子
public function huancun(){
dump(Cache::get('Test') );
}
返回值
:有就返回缓存的值,没有返回null
4、判断一个缓存是否存在
Cache::has(‘key’)
例子
public function huancun(){
dump(Cache::has('Test') );
}
返回值
:布尔值 true 或 false
5、缓存自增 / 自减
先缓存一个数据( 整型数值 )
public function huancun(){
dump(Cache::put('Test',0,100) );//100分钟
}
[ ] 表示可选
自增Cache::increment(‘key’[ ,增多少值 ] )
示例
public function huancun(){
dump(Cache::increment('Test' ));
//dump(Cache::increment('Test',6) );
}
第二个参数不带,默认自增 1
返回值
:如果没有缓存数据,返回的是( 0+ 值 ) , 缓存的是永久缓存。如果有缓存数据缓存 时间戳 都 不会变不管是不是整形,返回的是 (0+ 值) 。
如果缓存的值是’Test’ 自增并返回1 , 如果缓存的是’123’,自增并返回124
自减Cache::decrement(‘key’[ ,减多少值 ] )
示例
public function huancun(){
dump(Cache::decrement('Test') );
//dump(Cache::decrement('Test',6) );
}
返回值
:如果没有缓存数据,返回的是( 0 - 值 ) , 缓存的是永久缓存。如果有缓存数据缓存 时间戳 都 不会变不管是不是整形,返回的是( 0- 值 ) 。
如果缓存的值是’Test’ 自减并返回-1 , 如果缓存的是’123’,自增并返回122
其他的场景
场景
:token值,小程序用token访问次数,用一次减一次,不用老是请求token,次数用完重新获取token
Cache::remember(‘key’,分钟,function(){ } )
获取缓存数据,如果缓存数据不存在时给它存储一个默认值。
示例
public function huancun(){
dump(Cache::remember('T',20,function (){
return 3;
}) );
}
Cache::rememberForever(‘Test2’, function(){} )永久缓存
示例
public function huancun(){
dump(Cache::rememberForever('Test2', function() {
return 6;
}) );
}