使用 Redis 设置 Symfony 3.1 缓存组件
Setup of Symfony 3.1 cache component with Redis
我尝试使用 Redis 设置 Symfony 3.1 缓存。我遵循这个教程:
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
现在,当我尝试通过 snc_redis
访问 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 的内容。
你能告诉我我在哪里犯了错误或者给我一个提示可能是错的吗?
你在这里错过的最重要的事情是将结果保存到缓存:
$cachedResources->set($resources);
$this->cacheAdapter->save($cachedResources);
我尝试使用 Redis 设置 Symfony 3.1 缓存。我遵循这个教程:
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
现在,当我尝试通过 snc_redis
访问 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 的内容。
你能告诉我我在哪里犯了错误或者给我一个提示可能是错的吗?
你在这里错过的最重要的事情是将结果保存到缓存:
$cachedResources->set($resources);
$this->cacheAdapter->save($cachedResources);