【问题标题】:Explicitly clear django memcached flush/cache() OR delete specific per-view-cache key明确清除 django memcached flush/cache() 或删除特定的 per-view-cache 键
【发布时间】:2012-06-30 03:03:08
【问题描述】:

我正在使用 django 的 Memcached 和带有 @cache_page(timeout) 装饰器的 per-view 缓存机制。

在一个特定的视图函数中,我希望清除整个缓存。 我尝试了cache.clear()cache._cache.flush_all(),但似乎都没有刷新缓存。

还有其他方法可以做到这一点还是我做错了?

编辑: 我意识到完全清除缓存并不是一个好主意,而不是仅仅删除所需的键。但是,我不知道我用 @cache_page(timeout) 装饰的视图的键我如何知道这些?而在我获得密钥之后,我只是做一个cache.delete(key)?

谢谢!

【问题讨论】:

  • 清除整个缓存真的没有很好的理由。只需删除您要刷新的键,其余部分不要乱用。
  • 我不知道我用@cache_page(timeout) 装饰的视图的键 我如何知道这些?在我获得密钥后,我只需执行一次 cache.delete(key)?
  • 查看这个相关的 SO 问题:stackoverflow.com/questions/2268417/…

标签: django caching memcached flush


【解决方案1】:

有比刷新整个缓存更好的方法。见cache versioning

当您更改使用缓存值的运行代码时,您可能需要 清除任何现有的缓存值。最简单的方法是 刷新整个缓存,但这会导致缓存值丢失 仍然有效且有用。

Django 提供了一种更好的方法来定位单个缓存值。 Django 的缓存框架有一个系统范围的版本标识符, 使用 VERSION 缓存设置指定。此设置的值 自动结合缓存前缀和用户提供的 缓存键,获取最终的缓存键。

【讨论】:

    猜你喜欢
    • 2016-07-10
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 2018-05-26
    • 1970-01-01
    相关资源
    最近更新 更多