Symfony 3.3 memcached

时间:2017-11-16 23:01:02

标签: performance symfony caching memcached symfony-3.3

我尝试过使用memcached的不同方法。我没有找到关于如何在Symfony 3.3中使用它的完整解释,解决方案和良好实践。

问题1:https://symfony.com/blog/new-in-symfony-3-3-memcached-cache-adapter

也许我在这里没有看到什么,但我如何告诉Symfony我想要缓存什么(元数据,查询,结果 - 我使用的是学说)?哪里可以找到更多配置选项?有什么我可以读到的吗?

问题2:http://www.inanzzz.com/index.php/post/7rum/using-doctrine-memcached-caching-with-query-builder-in-symfony

运行stats命令会在内存中显示一些项目,但没有性能提升。什么都没有。我非常小心地遵循了步骤。有没有人知道我必须做更多的事情才能看到实际的结果吗?

我认为这不重要但是作为示例我使用的是简单的端点,它从数据库中获取帖子列表。

1 个答案:

答案 0 :(得分:1)

问题1:如何使用缓存?

请从您引用的博客(New in Symfony 3.3: Memcached Cache Adapter)中查看此示例:

$cacheProduct = $this->get('app.cache.products')->getItem($productId);
if (!$cacheProduct->isHit()) {
    $product = ...
    $cacheProduct->set($product);
    $this->get('app.cache.products')->save($cacheProduct);
} else {
    $product = $cacheProduct->get();
}

此缓存适配器将允许将数据存储在内存中。此示例使用memcache,但您也可以使用Redis。你必须决定代码的哪一部分太昂贵了。在每个请求执行,并可以缓存。当缓存失效时,这也取决于你,这可能是一个真正的痛苦:

  

计算机科学有两个难点:缓存失效,命名事物和逐个错误。   https://twitter.com/codinghorror/status/506010907021828096

博客大约是Symfony's Cache Component,但也有DoctrineCacheBundle。它们之间的区别可能会引起一些混淆,因为您可以在没有Doctrine ORM的情况下使用Doctrine Cache,反之亦然。

如果您希望Doctrine使用metadata_cacheresult_cachequery_cache,请查看the configuration reference。遗憾的是,我无法在Symfony.com上找到任何有用的文档。

问题2:没有性能提升?

我认为您现在没有使用任何缓存机制,所以请尝试这样做。

如果您在实施缓存机制后仍遇到问题,可以打开一个单独的问题,其中包含更多详细信息。