Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Як працює Cache::remember і як обрати ключ і час життя?

Cache::remember() повертає значення з кешу, а якщо його немає - виконує замикання, зберігає результат і повертає.

$categories = Cache::remember('categories:menu', now()->addHour(), function () {
    return Category::query()->orderBy('position')->get(['id', 'name', 'slug']);
});

Перший запит за годину піде в базу, решта отримають готовий результат.

Ключ:

  • має містити все, від чого залежить результат: posts:page:3, user:42:stats, products:locale:uk. Забули мову в ключі - українці побачать англійське меню;
  • з префіксом за сутністю - щоб було зрозуміло, що це, і легко скинути.

Час життя (TTL):

  • скільки часу застарілі дані прийнятні для користувача: курс валют - хвилини, меню категорій - години;
  • rememberForever() - лише коли кеш гарантовано скидають при змінах, інакше застарілі дані житимуть вічно.

Чого уникати:

  • кешувати те, що й так швидке: простий запит за первинним ключем часто швидший за звернення до Redis з десеріалізацією;
  • кешувати дані конкретного користувача під спільним ключем - це витік чужих даних.

Докладніше в документації: Отримання елементів з кешу

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання