Понимание кэширования Laravel: фасад кэша и Redis
Я новичок в Laravel. Я провел исследование по этой теме, но я не могу найти ответ, который проясняет ситуацию для меня.
Я знаю, что драйвер кэша Laravel по умолчанию установлен в файл, который я могу изменить. Он также имеет некоторые команды кэша ремесленника, такие как:
php artisan config:cache
php artisan route:cache
1) Даже если Laravel имеет некоторые встроенные команды и функции, которые автоматически обрабатывают некоторый кэш (не понимал точно, какие части), мне все равно приходится вручную использовать фасад кэша для результатов запроса, верно?
Он не делает это автоматически, и мне нужно только использовать фасад кэша, если я хочу что-то изменить или что-то еще, верно?
Вот случайный пример из учебника:
$posts = Cache::remember('index.posts', 30, function()
{return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();});
2) при использовании Redis (с пакетом predis) в качестве драйвера кэша, мне нужно использовать фасад кэша, или фасад Redis, или оба в некоторых случаях? Или я могу просто включить Redis в Laravel и server (Digital Ocean droplet on Forge) и больше ничего не делать?
Я видел что-то подобное в документах Laravel, используя фасад кэша:
Cache::store('redis')->put('bar', 'baz', 600);
Я также видел учебник с использованием фасада Redis:
use Illuminate\Support\Facades\Redis;
Route::get('/', function () {
$visits = Redis::incr('visits');
return $visits;
});
Я не могу понять, что правильно делать.
Ответы - Понимание кэширования Laravel: фасад кэша и Redis / Understanding Laravel caching: Cache facade and Redis

16.11.2019 03:55:34
Общий:
Они все в тайнике .
Они все использованы для уменьшения цены времени .
Differenet:
Конфигурации И Маршруты:
Это относится к применению . Мы называем его кэш приложений .
php artisan config:cache
php artisan route:cache
Эти две команды кэшируют маршруты и конфигурации.
ПУТЬ:
Они всегда хранятся в
bootstrap/cache/
Бегущий
php artisan cache:clear
Только очистите каталоги и файлы в bootstrap/cache/
.
Они статичны . Поэтому они меняются только тогда, когда вы их меняете.
Выгода
Если вы измените их, вам нужно clear
и cache
их вручную.
После того, как вы cahce эти маршруты и конфигурации.
Laravel не нужно снова читать конфигурации и маршруты из файла, что потребовало затрат времени ввода-вывода.
Кэш Файловой Системы И Кэш Redis:
Кэш файловой системы и Кэш Redis - это тоже кэш.
Однако они используют другой драйвер для хранения данных, то есть там, где вы храните данные кэширования .
Путь к файловой системе: если вы используете драйвер файловой системы. они хранятся в
storage/framework/cache/
Путь Reids: данные хранятся в
redis
по ключу-значению.
Когда вы их используете?
Когда вы обнаружили, что есть много запросов к этому коду для получения данных. И эти данные не меняются так быстро.
Вы можете использовать кэш для их хранения, а затем, в следующий раз другой запрос к этому api. он просто берет данные из кэша. как показано ниже:
$posts = Cache::remember('index.posts', 30, function()
{return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();});
Первый запрос получает данные сообщений из базы данных, а затем сохраняет эти данные в кэше(Reid или файловой системе) с истекшим сроком действия через 30 сек.
Следующий запрос получает данные сообщений только через кэш. Им не нужно снова искать в базах данных.
А вот этот:
use Illuminate\Support\Facades\Redis;
Route::get('/', function () {
$visits = Redis::incr('visits');
return $visits;
});
Значит, когда люди запрашивают localhost:8000/
, количество посещений пользователей увеличивается в redis
(не нужно хранить в базе данных, это стоит больше времени),
в следующий раз, когда запрос на поиск посетит count, его можно найти в redis
очень быстро.
PS: здесь используется фасад Redis, затем данные хранятся в
redis
.Если вы используете redis в качестве драйвера кэша,
Cache::remember()
также будет хранить данные в redis.Однако, используя Redis Facade, вы можете использовать множество методов redis.
Что лучше?
Я думаюredis
лучше, чем filesystem
система .
Потому
redis
хранит данные в памяти, а файловая система-на диске. Считывание данных из памяти происходит быстрее, чем с диска.Работать с данными в Redis проще, чем с файловой системой. Например, Redis поддерживает очистку всего кэша для определенного тега, но файловая система не может[потому что файловая система хранит данные кэша по имени зашифрованного ключа].
Для распределенного сервера кэш файловой системы-это плохая идея. Более низкий коэффициент попадания в кэш.
Честно говоря, есть и другие драйверы, которые можно выбрать, например mongodb
.
Кстати, мой английский не очень хорош, надеюсь, вы понимаете.


file
на redis
. Затем, когда вы используете метод кэша, он автоматически сохраняет данные в redis.

