gpt4 book ai didi

python - 缓存随机删除项目

转载 作者:太空宇宙 更新时间:2023-11-04 00:53:12 28 4
gpt4 key购买 nike

我设置了一个简单的本地内存缓存,我这样使用:

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)

服务器运行后,我通过 View 调用此函数,在命令行上使用 curl 来初始化缓存。

问题是,如果我多次调用它,有时它会像预期的那样找到项目并立即返回值,有时找不到它并重新计算值。键(此处 db)是我期望的字符串。我不明白为什么项目会从缓存中删除,显然是随机的,以及如何让它们保留下来。

有趣的是,当我使用全局变量而不是 Django 的缓存框架时,行为是相同的(由于 1MB 的限制,我尝试了所有的方法,除了 memcached)。

我没有设置 TIMEOUT 值(显然全局变量版本也没有):

CACHES = {
...
'stats': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'stats',
},

我的应用程序使用 Apache 和 mod_wsgi、2 个进程和 4 个线程运行。也许是相关的。会不会是不同的进程访问了它自己的缓存版本?

我做错了什么?

最佳答案

是的,这正是正在发生的事情。本地内存缓存正是:本地进程。

它不太适合在生产中使用,更不适合在多进程环境中使用。使用合适的缓存后端;例如,Redis 的启动和运行非常简单。

关于python - 缓存随机删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36200096/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com