【问题标题】:Symfony 3.3 memcachedSymfony 3.3 内存缓存
【发布时间】:2018-04-30 15:16:31
【问题描述】:

我尝试了不同的方式来使用 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 命令显示内存中有一些项目,但性能没有提高。什么都没有。我非常小心地按照步骤操作。有谁知道我需要做更多的事情才能看到实际结果吗?

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

【问题讨论】:

    标签: performance symfony caching memcached symfony-3.3


    【解决方案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:性能没有提升?

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

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

    【讨论】:

    • 斯蒂芬,感谢您的快速回复。我知道缓存是如何工作的。我已经在 Symfony 中浏览了这个 memcached 适配器的示例,但我无法真正得到我想要的。我想存储元数据和转换后的 dql 但不存储结果。这里只给我结果(我可能错了)。我想我会尝试使用 DoctrineCacheBundle 但是它看起来很旧并且描述不是很准确。它说它适用于 symfony2,但最近的提交放弃了对旧版本 Symfony 的支持。我会尝试并告诉你。
    猜你喜欢
    • 1970-01-01
    • 2015-07-21
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 2010-12-21
    • 1970-01-01
    相关资源
    最近更新 更多