缓存如何影响内存消耗?

时间:2012-05-19 18:08:59

标签: django caching

我有一个具有搜索功能的应用。此功能在我缓存24小时的巨型对象(字典)中查找搜索项。该对象大约有50,000个按键,重约10MB。

当我分析我的主机上的内存使用情况时,我注意到经过几次查询后,内存使用量从大约50MB变为超过450MB,促使我的托管服务提供商终止应用程序。

所以我想知道这里发生了什么。具体来说,缓存如何利用每个请求的内存,我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:1)

Django FileBasedCache因性能问题而闻名。您可以通过以下链接全面了解:

A smarter filebasedcache for Django

Bug: File based cache not very efficient with large amounts of cached files

错误被设置为不会修复争论:

  

我打算用wontfix,因为文件系统缓存是一种简单的方法来测试缓存,而不是一个严肃的缓存   战略。默认缓存大小和实现的剔除策略   文件缓存应该很明显。

答案 1 :(得分:0)

考虑使用像Memcache或Redis这样的KVS作为缓存策略,因为它们都支持到期。此外,如果更多预期功能与搜索相关,请考虑像ElasticSearch这样的专用搜索。

工具是如何提供的:

Installing memcached for a django project

http://code.google.com/p/memcached/wiki/NewStart

http://redis.io/commands/expire

https://github.com/bartTC/django-memcache-status

http://www.elasticsearch.org/guide/reference/index-modules/cache.html