假设你必须使用Python和Django来代码。
OBJECT_CACHE = {}
def get_my_objects(key, *args, **kwargs):
try:
return OBJECT_CACHE[key]
except KeyError:
OBJECT_CACHE[key] = # code to get object
return OBJECT_CACHE[key]
在运行相同代码库的多个项目的情况下,这将如何表现? OBJECT_CACHE
对每个项目都是唯一的,还是与所有项目中的对象混合在一起?
答案 0 :(得分:6)
对于每个正在运行的进程,它将是唯一的“缓存”(有多少取决于您的环境和配置)
但无论如何,这不是正确的方法。 Django使用本地内存缓存构建缓存,这与您的方法基本相同,但有利的是您可以毫不费力地交换“真正的”缓存。
您可以将其添加到settings.py:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'unique-snowflake'
}
}
你完成了。现在,您可以使用标准Django接口访问缓存:
>>> from django.core.cache import cache
>>> cache.set('my_key', 'hello, world!', 30)
>>> cache.get('my_key')
'hello, world!'
有关信息,请参阅Django docs。