нужна помощь, чтобы прояснить концепцию.
$sql = 'SELECT * FROM tbl_post LIMIT 20';
$dependency = new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_post');
$rows = Yii::app()->db->cache(1000, $dependency)->createCommand($sql)->queryAll();
1.если кэш содержит запись, проиндексированную оператором SQL.
2.если зависимость не изменилась (максимальное значение update_time такое же, как при сохранении результата запроса в кэше).
Я не понимаю, что означает приведенное выше объяснение. Особенно второй в отношении максимального времени обновления. Пожалуйста, поправьте меня, если я ошибаюсь.
В таблице tbl_post есть столбец update_time. Всякий раз, когда обновляется строка, время обновления также обновляется. Если сообщение извлекается из кеша, CDbCacheDependency сначала запросит в базе данных MAX(update_time)? Какова цель этого и как именно это работает при обновлении кеша?
Другой вопрос касается memcache. Я понимаю, что можно кластеризовать серверы memcache. Скажем, у меня есть следующие конфигурации.
1 сервер memcache в США. 1 сервер memcache в Европе.
Мой веб-сайт Yii использует кластер из 2 узлов. memcache разделит кэширование между двумя узлами.
1.user A извлекает сообщение из базы данных и кэширует его. предположим (123,$model) в узле США.
2. пользователь B хочет получить тот же пост из Европы. Будет ли ищущий ключ 123 находит кеш? Имеет ли значение, находятся ли оба пользователя в США или Европе?
Спасибо!!