#php #symfony #redis #symfony-3.1 #symfony-cache
#php #симфония #редис #symfony-3.1 #symfony-cache
Вопрос:
Я пытаюсь настроить кэш Symfony 3.1 с помощью Redis. Я следую этому руководству:
https://symfony.com/blog/new-in-symfony-3-1-cache-component
Я установил predis / predis и SncRedisBundle.
В моем файле config.yml я поместил
framework:
cache:
app: cache.adapter.redis
default_redis_provider: redis://192.168.34.10
snc_redis:
clients:
default:
type: predis
alias: default
dsn: redis://192.168.34.10
logging: %kernel.debug%
cache:
type: predis
alias: cache
dsn: redis://192.168.34.10
logging: %kernel.debug%
options:
connection_timeout: 10
read_write_timeout: 30
Теперь, когда я пытаюсь получить доступ к redis через snc_redis
него, он работает нормально. Но когда я пытаюсь использовать компонент кэша:
public function getLoggedUserAcl($userId)
{
$cachedResources = $this->cacheAdapter->getItem('acl.rules');
$cachedResources->expiresAfter(100);
if ($cachedResources->isHit()) {
dump('hit');
$resources = $cachedResources->get();
} else {
dump('not-hit');
$resources = $this->api->getCollection(Resource::class, null, null, [
'userId' => $userId
]);
$cachedResources->set($resources);
}
return $resources;
}
CacheAdapter — это @cache.app
сервис.
Он все время демпингует NOT_HIT
. В журналах нет ничего относительно REDIS.
Не могли бы вы сказать мне, где я допустил ошибку, или дать мне подсказку, что может быть не так?
Комментарии:
1. Пропавший без вести
$this->cacheAdapter->save($cachedResources);
2. Я не могу поверить, что это было так тривиально. Спасибо @malcolm можете ли вы оставить свой комментарий в качестве ответа, я приму его. Это работает.
3. Спасибо 🙂 Рад, что смог помочь 🙂
Ответ №1:
Самое главное, что вы пропустили здесь, это сохранить результат в кеш:
$cachedResources->set($resources);
$this->cacheAdapter->save($cachedResources);