Django KEY_PREFIX vs CACHE_MIDDLEWARE_KEY_PREFIX

时间:2013-09-05 15:35:11

标签: django django-cache

直到现在,我一直在为我的4个站点使用单个memcached实例。在其中三个我使用KEY_PREFIX,因为documentation暗示我需要这样做。一切都很好,但现在我需要定期清除列表视图(就像我添加一个条目)。我找到了一个way来清除页面,并在我遇到CACHE_MIDDLEWARE_KEY_PREFIX时正在审查它是如何工作的,现在我很困惑。

  1. 似乎从不使用KEY_PREFIX,除非您手动定义一个键然后实际使用它。这是真实的陈述吗?具体而言,有关使用KEY_PREFIX的文档似乎不准确?

  2. 看来我应该在我的设置文件中执行此操作以确保它们已对齐但我不想复制该键(demo:demo :)。这会与它重复吗?

    KEY_PREFIX = CACHE_MIDDLEWARE_KEY_PREFIX ='demo:'

  3. 我真的很想了解这两种机制是如何工作的。我开始怀疑他们真的是不同的

1 个答案:

答案 0 :(得分:0)

我认为你此刻并没有完全正确。

对于您的观点1,当使用不同的django安装共享相同的缓存时,KEY_PREFIX是最重要的设置,但它的使用方式如下:

CACHES = {
    'default': {
        "BACKEND": "redis_cache.cache.RedisCache",
        "LOCATION": "127.0.0.1:6379:1",
        "KEY_PREFIX": 'site-cache-prefix',
        "OPTIONS": {
            "CLIENT_CLASS": "redis_cache.client.DefaultClient",
        }
    }
}

这意味着每个django实例在访问缓存时将使用不同的前缀。这可能就是你想要的。如果您确实希望在您的网站之间专门共享缓存,则添加另一个名为“共享”的缓存别名。可能是要走的路。

CACHE_MIDDLEWARE_KEY_PREFIX专门用于django的缓存中间件,它将与我认为的KEY_PREFIX一起使用。