2
我成立了,我用这样一个简单的本地内存缓存:缓存随机删除项目
from django.core.cache import caches
def stats_service(db):
stats_cache = caches['stats']
if stats_cache.get(db) is None:
stats_cache.set(db, GlobalStatsService(db))
return stats_cache.get(db)
在服务器运行后,我调用该函数通过视图,在命令行卷曲,初始化缓存。
的问题是,如果我叫了好几次,有时它会找到该项目,并立即返回值,符合市场预期,有时候会找不到它,将重新计算值。密钥(这里是db
)是我期望它们的字符串。我无法理解为什么项目从缓存中删除,显然是随机的,以及如何让它们保留。
有趣的是,该行为是一样的,我使用全局变量,而不是Django的缓存框架时(我尝试所有这些,除了memcached的,因为1MB限制)。
我已没有TIMEOUT
值(和明显的全局变量版本要么什么都没有):
CACHES = {
...
'stats': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'stats',
},
我的应用程序与Apache和mod_wsgi的,2个进程和4个线程运行。也许它是相关的。难道是不同的进程访问它自己的缓存版本?
我在做什么错?
这Redis的样子我需要什么,谢谢。像Memcached一样,但没有内存限制。奇怪的是,Django文档甚至没有提到它。 – JulienD
@muraveill Redis不是内置的,它需要第三方后端。这就是为什么它没有在文档中提到。 – knbk
@knbk因此,没有了Memcached,但它提到:https://docs.djangoproject.com/en/1.9/topics/cache/#memcached。 – JulienD