是否有任何用于Symfony/Cache组件的文档或示例?

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

  • 我多次浏览文档,看看为什么我的游泳池没有出现在Symfony的容器中.原来它**必须明确地标记为'public`,就像你在asnwer中显示一样.谢谢! (2认同)