2016-01-17 5 views
14

समाचार वेबसाइट पर, मेरे पास एक आलेख मॉडल है, और मैं नवीनतम लेखों को कैश करना चाहता हूं क्योंकि मुझे उम्मीद है कि उनके पास उच्चतम हिट है। मैं एक विधि है कि इस तरह से चल रही है लिख सकते हैं कैसे:लार्वेल, परिणामों को कैश करने के लिए इन-मेमोरी डीबी का उपयोग करके

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); 
} 

कई स्मृति ड्राइवरों रहे हैं आप उपयोग कर सकते हैं उल्लेख के रूप में अच्छी तरह से कृपया और आप निर्धारित कर सकते आप मानों को स्मृति में कैसे संग्रहीत करना चाहते हैं। ऊपर, यह मानता है कि आप 'लेख-' के साथ मूल्य संग्रहीत करते हैं। $ आईडी (जैसे "लेख -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); 
    }); 
} 

यह कैश होगा और वापसी बंद करने का मूल्य वापस आ गया है, अन्यथा यदि आवश्यक हो तो कैश को पॉप्युलेट करने के बंद होने का निष्पादन।

संबंधित मुद्दे

 संबंधित मुद्दे