我们经常需要对cache进行操作
常见的方法就是首先判断缓存是否存在,如果不存在,那么读取数据库,然后保存到缓存中
这样,下次读取就会先从缓存读取,减少了数据库读取的次数,降低了数据库的压力
在laravel框架中,有没有优雅的实现方法呢
我们可以用cache::remember来实现
代码简练优雅,而且不需要用json_encode,json_decode对数据组进行编码
以下为代码
```
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;
use Test\ApiResponse\Facades\ApiResponse;
class NewClassController extends Controller
{
//根据关数获取配置
public function index(Request $request,$id)
{
$res = Cache::remember("class_list_".$id,10,function () use($id){
$res = DB::connection('mysql')->table('class')->select('id','name','preface')->where('type',$id)->where('status',1)->get()->toArray();
foreach($res as $k=>&$v){
$v = get_object_vars($v);
$res[$k]['preface'] = env('CDN_COS').'upload/'.$v['preface'];
}
return $res;
});
return ApiResponse::success(['list' => $res]);
}
}
```