2016-01-17 15 views
14

Trên trang web tin tức, tôi có mô hình bài viết và tôi muốn lưu vào bộ nhớ cache các bài viết mới nhất vì tôi cho rằng chúng có số lần truy cập cao nhất. Làm thế nào tôi có thể viết một phương pháp mà hoạt động theo cách này:Laravel, sử dụng bộ nhớ trong DB cho kết quả bộ nhớ cache

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

    return Article::find($id); 
} 

Nếu có bất kỳ phương pháp tốt hơn, xin vui lòng đề cập đến chúng cũng

+1

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

Trả lời

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

Có nhiều trình điều khiển bộ nhớ, bạn có thể sử dụng và bạn có thể xác định cách bạn muốn lưu trữ các giá trị trong bộ nhớ. Ở trên, nó giả sử bạn đã lưu trữ giá trị với 'article-'. $ id (chẳng hạn như "article-5" làm khóa). Tuỳ bạn.

Kiểm tra các tài liệu: https://laravel.com/docs/master/cache

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

+0

Bạn cũng nên thêm bài viết vào bộ nhớ cache nếu nó hiện không có trong đó – Steve

1

Laravel có một tính năng một cách rõ ràng cho kịch bản này, được gọi là Lấy Hoặc Cập nhật:

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

này sẽ cache và trả lại giá trị trả về của đóng, nếu không thì thực hiện đóng cửa để điền vào bộ đệm nếu cần.

Các vấn đề liên quan