On News Website, I have an Article model, and I want to cache the latest articles since I expect they have the highest hits. How can I write a method that operates in this way:
public function findById($id)
{
if(Article::inMemory($id))
return Article::findFromMemory($id);
return Article::find($id);
}
If there are any better approaches, please mention them as well
Using cache to store query results It's as simple as it gets! Now, for the next 10 minutes, Laravel will fetch the result from the books key of the cache instead of querying the database. And this can especially improve the performance of your application when you're performing complex queries to fetch results.
Your application's cache configuration file is located at config/cache.php . In this file, you may specify which cache driver you would like to be used by default throughout your application. Laravel supports popular caching backends like Memcached, Redis, DynamoDB, and relational databases out of the box.
Laravel provides a unified API for various caching systems. The cache configuration is located at app/config/cache. php . In this file you may specify which cache driver you would like used by default throughout your application.
use Cache;
public function findById($id)
{
if ($articleInCache = Cache::get('article-' . $id)) {
return $articleInCache;
}
return Article::find($id);
}
There are multiple memory drivers you can use and you can determine how you want to store the values in memory. Above, it assumes you stored the value with the 'article-' . $id (such as "article-5" as the key). It's up to you.
Check out the docs: https://laravel.com/docs/master/cache
Check out Laracasts: https://laracasts.com/series/real-time-laravel-with-socket-io/episodes/2
Laravel has a feature explicitly for this scenario, called Retrieve Or Update:
use Cache;
public function findById($id)
{
return Cache::rememberForever("article-$id", function () use ($id) {
return Article::find($id);
});
}
This will cache and return the closure's returned value, otherwise executing the closure to populate the cache if needed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With