2016-01-17 104 views
14

在新聞網站上,我有一個文章模型,我想緩存最新的文章,因爲我希望他們有最高的點擊率。我怎麼能寫,以這種方式進行操作的方法:Laravel,使用內存中的數據庫來緩存結果

public function findById($id) 
{ 
    if(Article::inMemory($id)) 
     return Article::findFromMemory($id); 

    return Article::find($id); 
} 

如果有什麼更好的辦法,請註明他們以及

+1

https://laravel.com/docs/5.2/cache –

回答

4
use Cache; 
public function findById($id) 
{ 
    if ($articleInCache = Cache::get('article-' . $id)) { 
     return $articleInCache; 
    } 
    return Article::find($id); 
} 

有多個存儲驅動程序,你可以使用,你可以決定你想如何將這些值存儲在內存中。上面,它假定你用'article-'存儲了值。 $ id(如「article-5」爲關鍵字)。隨你便。

退房文檔:https://laravel.com/docs/master/cache

退房Laracasts:https://laracasts.com/series/real-time-laravel-with-socket-io/episodes/2

+0

如果文章當前不在那裏,您還應該將文章添加到緩存中 – Steve

1

Laravel有一個特點,明確了這種情況下,所謂的檢索或更新:

use Cache; 
public function findById($id) 
{ 
    return Cache::rememberForever("article-$id", function() use ($id) { 
     return Article::find($id); 
    }); 
} 

這將緩存並返回閉包的返回值,否則執行閉包以根據需要填充緩存。