代码之家  ›  专栏  ›  技术社区  ›  Antoine Nedelec

Symfony 4-缓存vs数据库解决方案

  •  0
  • Antoine Nedelec  · 技术社区  · 6 年前

    我目前正在为我的当前项目使用缓存,但我不确定这是否是正确的做法。

    我需要从Web API中检索大量数据(可以是图片、节点、文件夹、库……的节点……这些节点会经常更改,所以我需要快速访问(一次加载多达300-400个元素)。目前我将它们存储在缓存中(密钥为节点id的md5,所以很容易检索和更新)。

    到目前为止,它工作得很好,但如果清除缓存,则需要1分钟才能再次创建所有缓存。

    我应该使用数据库来存储这些节点吗?会快/慢/一样吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   dbrumann    6 年前

    你的问题很宽泛,很难回答。在缓存键下保存300-400个元素对我来说似乎有问题。您可能遇到的问题是,当在缓存中存储数据时,当检索数据时会导致问题。当你的缓存服务关闭时,你的应用将几乎无法使用。

    如果在清除/更新缓存时遇到问题,则可能需要寻找替代方案。这可能是一个数据库或ElasticSearch,高级缓存功能,如 tagged caching 有助于防止在部分信息更新时必须清除整个缓存。您可能还希望使用类似于链提供程序的东西将东西存储在多个缓存中,以防止前面提到的无法访问的缓存“破坏”您的应用程序的问题。您还可以研究一种与cqr通用的模式,称为读取模型。

    有很多变数在起作用。如果你想知道哪一个会产生最好的结果,也就是说哪一个更快,你应该经常使用真实的数据进行性能测试 Symfony's debug toolbar & profilers 或第三方服务,如 blackfire.io tideways . 您可能还希望使用以下工具进行容量测试 JMeter 当同时有多个用户时,确保这些结果仍然正确。