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
发表评论