Python Django缓存vs模型字段中的存储?哪个更有效率?

时间:2017-06-22 14:42:58

标签: python django caching

我的视图显示了一个数据表(特定于可能拥有许多用户的客户),该表占用了大量的计算资源来填充。客户数据每周更改4/5次,通常在同一天。

缓存是一个明显的解决方案,但我想知道Django's cache framework是否比在客户级创建Textfield并在那里存储数据更有效率?

我觉得它更容易实现(并在数据发生变化时清除Textfield)但有什么缺点,还有什么我需要注意的吗? (如果数据集太大会出现问题吗?模型中的其他字段等等)

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:2)

缓存是缓存是缓存,但是你实现它,缓存的主要问题是失效。

正如Melvyn正确回答的那样,缓存框架的情况是它(在数据库之外可以,取决于您选择的后端)。它是赞成还是缺点确实取决于你的数据库负载,基础设施和诸如此类的东西......如果你已经使用了缓存框架(我的意思是超出简单的无条件整页缓存)并希望最大限度地减少你的负载数据库然后它可能值得增加复杂性。

另外,将计算结果存储在数据库中非常简单,并且不需要额外的服务器,安装等。我个人会选择专用模型 - 以避免数据库级别的不必要开销 - 包括缓存结果和此结果所依赖的参数的校验和(规范的记忆模式),以便您可以轻松检测是否需要重新计算。我发现这个解决方案比试图检测每个和任何这些参数的更改更容易维护,并且无效/重新计算缓存"在飞行中" (这可以使适当的缓存失效变得困难或至少很难实现)但这又取决于这些参数是什么以及它们来自何处。

答案 1 :(得分:0)

使用缓存框架的好处是您不必使用数据库。您可以独立于数据库扩展缓存存储,并在不同的物理(或虚拟)计算机上运行缓存。

此外,您不必实施过时与新鲜逻辑,但这是一次性的。

答案 2 :(得分:0)

每周4-5次看起来不是一个很大的挑战,但没有人知道你有什么样的计算,你应该存储多少数据,你有多少用户等等。 如果你想用TextField实现它,它仍然是某种缓存系统,所以我建议首先使用django的缓存系统和数据库后端https://docs.djangoproject.com/en/1.11/topics/cache/#database-caching你不能像TextField那样用1个查询检索数据,但是之后,如有必要,您可以将数据库替换为其他层。