Зависимость кэша в Yii заключается в том, чтобы просто привязать кэш к другой вещи, и если что-то изменится, кэш также изменится. Это немного похоже на запуск событий в JS (но не так сильно), и изменения в кэшировании вызваны зависимостями.
Зависимости могут быть файлами, базами данных или даже выражениями. Это очень мощно.
Yii предоставляет пять методов зависимостей, и здесь мы представляем три часто используемые зависимости.
1. Зависимость от документа
Как следует из названия, он связывает кэш и файлы вместе. Если содержимое файла изменится, это повлияет на кэш. (Критерий Yii-время последнего изменения документа)
Мы проиллюстрируем этот процесс примерами.
1. Сначала получите компонент кэша
$cache = \Yii::$app->cache;
2. Экземпляр Файловая зависимость
Класс (где имя файловой зависимости: Имя файла
В то же время назначьте его переменным $dependency
. Здесь мы будем кэшировать и yanying.txt
Документы связаны, если yanying.txt
Если содержимое изменится, соответствующий кэш будет недействительным и недоступным.
$dependency = new \yii\caching\FileDependency(['fileName'=>'yanying.txt']);
3. Давайте добавим один в кэш ключ
с помощью file_key
Ему присваивается значение hello world
. В то же время установите время истечения срока действия равным 3000 секундам и запишите в нем последний параметр. $зависимость
Зависимость.
$cache->add('file_key','hello world',3000,$dependency);
4. В течение 3000 секунд мы обновим веб-страницу. Всегда доступен файловый ключ
Значение привет, мир
。
$cache->get('file_key'); // hello world
5. В это время мы меняемся. yanying.txt
Значение в файле. Хотя срок действия кэша еще не истек, мы не можем получить значение кэша. Кэш становится недействительным, так как зависимые файлы изменились.
var_dump($cache->get('file_key')); // false
2. Зависимость Выражения
Зависимость выражения-это зависимость, которая связывает значение после операции выражения с кэшем. Когда значение выражения изменится, это повлияет на кэш.
1. Там же. Получить Компоненты Кэша
$cache = \Yii::$app->cache;
2. Экземпляр Зависимость выражения
Класс (имя зависимости выражения: выражение
В то же время назначьте его переменным $dependency
. Здесь зависимость от выражения отличается от зависимости от файла. выражение
Соответствующее есть \Yii::$app->запрос->get("идентификатор")
– это значение идентификатора в прямой ссылке get (выражение здесь является выражением PHP, а не ограничивается кодом YII).
$dependency = new \yii\caching\ExpressionDependency(['expression'=>'\Yii::$app->request->get("id")']);
3. Давайте добавим один в кэш ключ
с помощью file_key
Значение равно hello world
. В то же время, после установки времени истечения срока действия на 3000 секунд, последний параметр записывается в $dependence
Зависимость.
$cache->add('file_key','hello world',3000,$dependency);
4. В течение 3000 секунд мы обновим веб-страницу. Там же, мы можем получать его все время. файловый ключ
Значение привет, мир
。
$cache->get('file_key'); // hello world
5. В этот момент мы меняем ссылку id
На значение. Итак: \Yii::$app->запрос->получить("идентификатор")
Полученное значение изменится, и кэш выйдет из строя. Кэшированные значения не могут быть получены одновременно.
var_dump($cache->get('file_key')); // false
3. Зависимость от ДБ
Зависимость от БД также является наиболее распространенной зависимостью в реальном производстве. Мы можем использовать оператор SQL непосредственно в качестве условия зависимости. Когда содержимое запроса к базе данных изменится, это повлияет на кэш.
Соответственно, мы можем использовать этот метод, чтобы определить, нужно ли обновлять наши кэшированные данные, когда в базе данных изменилось содержимое, мы обновляем кэш.
1. Прежде всего, получите компонент кэша
$cache = \Yii::$app->cache;
2. Экземпляр Зависимость от Бд
Класс (имя зависимости бд: sql). В то же время назначьте его переменным $dependency
. среди sql
Соответствующее значение представляет собой непосредственно выполняемую инструкцию SQL.
$dependency = new \yii\caching\DbDependency(['sql'=>'SELECT COUNT(*) FROM user']);
3. Давайте добавим один в кэш ключ
с помощью file_key
Значение равно hello world
. В то же время, после установки времени истечения срока действия на 3000 секунд, последний параметр записывается в $dependence
Зависимость.
$cache->add('file_key','hello world',3000,$dependency);
4. Если предположить, что данные базы данных не изменились, кэш не изменится за 3000 секунд. Мы можем получить значение непосредственно из следующего кода hello world
.
$cache->get('file_key'); // hello world
5. В это время, если в базу данных будут добавлены новые данные, кэш будет недействителен и не может быть извлечен. Здесь критерием зависимости SQL является результат запроса, здесь мы используем количество записей, вы также можете использовать его напрямую. выберите * из таблицы
Если результаты изменятся, это повлияет на кэш.
var_dump($cache->get('file_key')); // false
В это время мы также можем с радостью извлекать значения базы данных и создавать новые кэши.