symfony使用缓存

2019-07-19 18:31:00
CJL
原创
3872

参考文档:

https://symfony.com/doc/4.2/components/cache.html The Cache Component



使用默认文件缓存

1、注入CacheInterface $cache

public function __construct(CacheInterface $cache)
{
    $this->cache = $cache;
}

2、使用方法一

$idsCache = $this->cache->getItem('cache_virtual_user_ids');
if (!$idsCache->isHit()) {
    $ids = $this->getAllUserId($type); //获取原始数据
    $idsCache->set($ids);
    $idsCache->expiresAfter(3600);
    $this->cache->save($idsCache);
} else {
    $ids = $idsCache->get();
}

3、使用方法二(推荐)

$ids = $this->cache->get('cache_virtual_user_ids', function (CacheItem $cacheItem) use ($type) {
    $cacheItem->expiresAfter(3600);
    return $this->getAllUserId($type); //获取原始数据
});


使用redis做缓存

1、配置

.env配置连接DSN

REDIS_URL_DSN=redis://9f83d4682ba8b962@10.0.0.221:6379

config/packages/cache.yaml 配置缓存池

framework:
    cache:
        default_redis_provider: '%env(resolve:REDIS_URL_DSN)%'
        pools:
            user.cache:
                adapter: cache.adapter.redis

2、注入(变量名需与pool的命名一致转为驼峰命名,如user.cache为$userCache)建议去除存储类型标识,方便后期切换缓存存储引擎切换

public function __construct(CacheInterface $userCache)
{
    $this->cache = $userCache;
}

3、使用与文件缓存使用的方式一致



清除缓存

php bin/console cache:clear

php bin/console cache:pool:clear cache.global_clearer

详细参考:https://symfony.com/doc/4.2/cache.html#clearing-the-cache


缓存使用效果查看

安装Profiler可以查询数据库的查询及cache的命中

https://symfony.com/doc/4.2/profiler.html



发表评论
评论通过审核后显示。
流量统计