2016-07-15 72 views
1

我有一个Django Web应用程序,它当前正在运行并收到很多查询。我正在寻找方法来优化其性能,并且可以改进的一个方面是它如何与其数据库进行交互。在Django中缓存一个静态数据库表

在其当前状态下,对特定视图的每个请求都会将整个数据库表加载到完成查询的熊猫数据框中。该表由超过55,000行的文本数据组成(主要是协调)。

为了避免不必要的查询,我建议将数据库缓存到内存中并在第一次加载时缓存它。这将消除一些数据库方面的开销。我之前从未使用Django的这个功能,所以我有点迷路。

Django manual似乎没有我想要做的具体实现。将整个表存储在内存中还是将其存储在文件中是一个更好的主意?

+0

我预测这个问题会被标记为过于宽泛,但我可以建议你先从https://github.com/Suor/django-cacheops开始,然后再进一步google,当你将关注的是你究竟想要的是什么 – valignatev

+0

你也可以尝试[django cachalot](https://github.com/BertrandBordage/django-cachalot)。设置起来非常简单,它完全符合您的需求:将查询保存在内存中的第一个请求中,稍后从中获取。 – mislavcimpersak

回答

1

我有一个类似的问题,django-cache-machine像一个魅力工作。它使用Django缓存功能来缓存查询结果。这是很容易设置(假设你已经配置Django的缓存后端):

pip install django-cache-machine 

然后在模型中要缓存:

from caching.base import CachingManager, CachingMixin 

class MyModel(CachingMixin, models.Model): 
    objects = CachingManager() 

就是这样,你的查询将被缓存。