6

With symfony 3.1 we got Cache Component (https://github.com/symfony/cache)

I can't find any documentation or examples for this component because it's new.

Can anybody write simple example how to use this component with symfony 3.1

4

1 回答 1

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 

当然你也可以自己定义服务。

然后在您的代码中,您可以使用创建的缓存池来创建 CacheItems 并缓存它们:

$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);
}

如果 Psr-6 CacheItem 在缓存中不存在,则由池创建。
它将获得第一次查询时使用的密钥。然后您可以设置一个值和过期时间并将其保存到缓存中。

有关 PSR-6 缓存的用途和方式的更多信息,请参见此处:http ://www.php-fig.org/psr/psr-6/

组件的 symfony 文档(注意:仅针对组件,不适用于框架集成)仍然是 PR,但您可以在此处预先检查: https ://github.com/symfony/symfony-docs/pull/6515

于 2016-06-28T15:41:10.333 回答