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

时间:2018-06-10 13:10:27

标签: database symfony caching

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

我需要从web api中检索大量数据(节点可以是图片,节点,文件夹,图库......这些节点会经常更改,所以我需要快速访问(加载高达300-400)目前我将它们存储在缓存中(密钥为node_id的md5,因此易于检索和更新)。

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

我应该使用数据库来存储这些节点吗?它会更快/更慢/相同吗?

1 个答案:

答案 0 :(得分:1)

你的问题很广泛,很难回答。在缓存键下保存300-400个元素对我来说是个问题。您可能遇到存储在缓存中时序列化的问题,以及在检索数据时反序列化会给您带来问题。每当您的缓存服务关闭时,您的应用程序几乎无法使用。

如果您在清除/更新缓存时遇到问题,可能需要寻找替代方案。这可能是数据库或弹性搜索,像tagged caching这样的高级缓存功能可以帮助您防止在部分信息更新时清除整个缓存。您可能还希望使用类似链提供程序之类的东西来存储多个缓存中的内容,以防止上述无法访问缓存的问题"破坏"你的应用。您还可以查看CQRS常见的模式,称为读取模型。

有很多变量可以发挥作用。如果您想知道哪一个会产生最佳结果,即哪一个更快,您应该使用Symfony's debug toolbar & profilers或第三方服务(如blackfire.io或{{3})对实际数据进行频繁的性能测试}。您可能还希望使用tideways等工具进行容量测试,以确保当有多个并发用户时,这些结果仍然有效。