Полный цикл в digital

Методы Cache

Кэш Laravel предоставляет множество методов, используемых для реализации кэширования. Ниже перечислены различные методы, классифицированные в соответствии с их вариантом использования:

  1. put()
  2. get()
  3. many()
  4. putMany()
  5. increment()
  6. decrement()
  7. forever()
  8. forget()
  9. flush()
  10. remember()
  11. rememberForever()

С возможностями методов лучше всего ознакомиться на официальной странице.

Получение элементов из кеша

Метод get фасада Cache используется для извлечения элементов из кеша. Если элемент не существует в кеше, будет возвращено значение null. Если хотите, то вы можете передать второй аргумент методу get, указав значение по умолчанию, которое вы хотите вернуть, если элемент отсутствует:

$value = Cache::get('key');
$value = Cache::get('key', 'default');

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

$value = Cache::get('key', function () {
return DB::table(/* ... */)->get();
});

Проверка наличия элемента

Метод has используется для определения того, существует ли элемент в кеше. Этот метод также вернет false, если элемент существует, но его значение равно null:

if (Cache::has('key')) {
  //
}

Увеличение и уменьшение отдельных значений в кеше

Методы increment и decrement могут использоваться для изменения значений целочисленных элементов в кеше. Оба эти метода принимают необязательный второй аргумент, указывающий величину увеличения или уменьшения значения элемента:

Cache::increment('key');
Cache::increment('key', $amount);
Cache::decrement('key');
Cache::decrement('key', $amount);

Выполнение замыкания с последующим сохранением и получением результата

По желанию можно получить элемент из кеша, но также сохранить значение по умолчанию, если запрошенный элемент не существует. Например, вы можете получить всех пользователей из кеша или, если они не существуют, получить их из базы данных и добавить их в кеш. Вы можете сделать это с помощью метода Cache::remember:

$value = Cache::remember('users', $seconds, function () {
  return DB::table('users')->get();
});

Если элемент не существует в кеше, то замыкание, переданное методу remember, будет выполнено, и его результат будет помещен в кеш.

Вы можете использовать метод rememberForever, чтобы получить элемент из кеша или сохранить его навсегда, если он не существует:

$value = Cache::rememberForever('users', function () {
  return DB::table('users')->get();
});

Получение данных с последующим удалением элемента

Если вам нужно получить элемент из кеша, а затем удалить этот элемент, вы можете использовать метод pull. Как и в методе get, если элемент не существует в кеше, то будет возвращен null:

$value = Cache::pull('key');

Сохранение элементов в кеше

Вы можете использовать метод put фасада Cache для сохранения элементов в кеше:

Cache::put('key', 'value', $seconds = 10);

Если время хранения не передается методу put, то элемент будет храниться бесконечно:

Cache::put('key', 'value');

Вместо того, чтобы передавать количество секунд как целое число, вы также можете передать экземпляр DateTime, представляющий желаемое время хранения кешированного элемента:

Cache::put('key', 'value', now()->addMinutes(10));

Сохранение значений при условии их отсутствия

Метод add добавит элемент в кеш, только если он еще не существует в хранилище кеша. Метод вернет true, если элемент был действительно добавлен в кеш. В противном случае метод вернет false. Метод add – это [атомарная операция](https://ru.wikipedia.org/wiki/Атомарная_операция):

Cache::add('key', 'value', $seconds);

Сохранение элементов на постоянной основе

Метод forever используется для постоянного хранения элемента в кеше. Поскольку срок действия этих элементов не истекает, то их необходимо вручную удалить из кеша с помощью метода forget:

Cache::forever('key', 'value');

Если вы используете драйвер memcached, то элементы, которые хранятся «на постоянной основе», могут быть удалены, когда кеш достигнет предельного размера.

Удаление элементов из кеша

Вы можете удалить элементы из кеша с помощью метода forget:

Cache::forget('key');

Вы также можете удалить элементы, указав нулевое или отрицательное количество секунд срока хранения:

Cache::put('key', 'value', 0);
Cache::put('key', 'value', -5);

Вы можете очистить весь кеш, используя метод flush:

Cache::flush();

Очистка кеша не учитывает ваш настроенный «префикс» кеша и удаляет все записи из кеша. Внимательно учитывайте это при очистке кеша, который используется другими приложениями.

Глобальный помощник кеша

Помимо использования фасада Cache, вы также можете использовать глобальную функцию cache для извлечения и хранения данных через кеш. Когда функция cache вызывается с одним строковым аргументом, она возвращает значение переданного ключа:

$value = cache('key');

Если вы передадите массив пар ключ / значение и срок хранения в функцию, то она будет хранить значения в кеше в течение указанного времени:

cache(['key' => 'value'], $seconds);
cache(['key' => 'value'], now()->addMinutes(10));

Когда функция cache вызывается без каких-либо аргументов, то она возвращает экземпляр реализации Illuminate\Contracts\Cache\Factory, позволяя вам вызывать другие методы кеширования:

cache()->remember('users', $seconds, function () {
  return DB::table('users')->get();
});

При тестировании вызова глобальной функции cache вы можете использовать метод Cache::shouldReceive так же, как если бы вы [тестировали фасад](mocking.md#mocking-facades).

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг