Dan*_*sev 6 caching symfony-3.1
使用symfony 3.1,我们得到了缓存组件(https://github.com/symfony/cache)
我找不到这个组件的任何文档或示例,因为它是新的.
任何人都可以编写简单的示例如何将此组件与symfony 3.1一起使用
ivo*_*oba 10
缓存组件主要在Symfony内部用于序列化器等.
但是最新的FrameworkBundle已经支持通过config.yml创建自己的缓存池.目前似乎没有关于此的任何文档,所以我通过以下方式挖掘自己:
在config.yml中,您可以创建一个新的缓存
framework:
...
cache:
default_redis_provider: redis://%cache.redis_host%:%cache.redis_port%/%cache:redis_db%
pools:
my_cache:
adapter: cache.adapter.redis
public: true
default_lifetime: 1200
provider: cache.default_redis_provider
Run Code Online (Sandbox Code Playgroud)
当然,您也可以自己定制服务.
在您的代码中,您可以使用创建的缓存池来创建CacheItem并缓存它们:
$cacheItem = $this->get('my_cache')->getItem($cacheKey = $item->getId());
if(!$cacheItem->isHit()){
$cacheItem->set($item);
$cacheItem->expiresAfter(null); //this needs to be called to use defaultTime
$this->get('my_cache')->save($cacheItem);
}
Run Code Online (Sandbox Code Playgroud)
如果池中不存在Psr-6 CacheItem,则它将由池创建.
它将获得它首先被查询的密钥.然后,您可以设置值和到期时间并将其保存到缓存中.
有关PSR-6缓存的内容和方式的更多信息,请访问:http://www.php-fig.org/psr/psr-6/
该组件的symfony文档(注意:仅适用于组件,而不是框架集成)仍然是PR,但您可以在此处预先检查它:https: //github.com/symfony/symfony-docs/pull/6515