Laravel, используя БД в памяти для кеширования результатов

На сайте новостей у меня есть модель Article, и я хочу кэшировать последние статьи, так как ожидаю, что они имеют самые высокие хиты. Как я могу написать метод, который работает таким образом:

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

return Article::find($id);
}

Если есть более подходящие подходы, пожалуйста, укажите их

14

Решение

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

4

Другие решения

В Laravel для этого сценария есть функция, которая называется Retrieve Or Update:

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

Это кеширует и возвращает возвращаемое значение замыкания, в противном случае выполняется замыкание, чтобы заполнить кеш при необходимости.

1

По вопросам рекламы [email protected]