在Laravel中从数据库中缓存数据中搜索值

时间:2019-03-20 08:14:08

标签: laravel caching redis

我正在学习进行缓存,据我所知

if(cache::has('cacheKey')) {
    cache::get('cacheKey')
} else {
    $data=cache::remember('cacheKey',time,function() {
    return db::table('user')->get();});
    return $data; 
}

现在的问题是,当我尝试在键上搜索特定数据,然后在结果上分页该数据时,我确实使用了 Cache :: remember ,但是当我使用时如何快速做到这一点?当我尝试搜索缓存键时,总是 cache :: remember 函数,这里是代码

$page    = $req->has('page') ? $req->query('page') : 1;
$keyword = $req->keyword;

if(cache::has('FileData')) {
    if(!empty($keyword)) { 
        $file = cache::remember('FileData'.'search='.$keyword.'page='.$page,1440,function() use ($keyword) {
               return File::with('callcase','lettercase','update_table','fileimages')
                      ->where('id','Like','%'.$keyword.'%')
                      ->orWhere('file_name','Like','%'.$keyword.'%')
                      ->orWhere('recieved_by','Like','%'.$keyword.'%')
                      ->orWhere('processed_by','Like','%'.$keyword.'%')
                      ->orWhere('address','Like','%'.$keyword.'%')
                      ->orWhere('contact_no','Like','%'.$keyword.'%')
                      ->orWhere('show_status','Like','%'.$keyword.'%')
                      ->orWhere('Reopen','Like','%'.$keyword.'%')
                      ->orderBy('id','desc')
                      ->paginate(25)
                      ->setpath('');
                });

        $file->appends(['keyword'=>$keyword]);
        if(count($file)>0) {    
            return view('home')->with('files',$file) ;
        } else { 
            $error = "File does not found , Search another using keyword ";
            return view('home')->with('filemsg',$error);
        }
    } else {
            $file = cache::remember('FileData'.'page='.$page,1440,function () {
                    return File::with('callcase','lettercase','update_table','fileimages')
                           ->orderBy('id','desc')
                           ->paginate(25);});
                return view('home')->with('files',$file) ;
        }   
} else {
            $file = cache::remember('FileData',1440,function(){
                   return File::with('callcase','lettercase','update_table','fileimages')
                          ->orderBy('id','desc')
                          ->paginate(25);
            });
            return view('home')->with('files',$file);
}

我的代码可以正常工作并按我想要的方式返回数据,但是每次我记住数据时,我都会对此感到困惑,那么当我从已经缓存的键中检索数据并搜索时,如何才能更快地做到这一点呢?他们并为他们分页,如果我做错了什么,我该怎么做并帮助我。

0 个答案:

没有答案