Настройка компонента кэша Symfony 3.1 с Redis

#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);