【问题标题】:Why is the Django database cache not shared across multiple threads?为什么 Django 数据库缓存不跨多个线程共享?
【发布时间】:2016-09-23 02:25:08
【问题描述】:

似乎每个线程都维护其单独的缓存。我应该只使用我自己的 Django 对象来让多个线程共享一个数据库缓存吗?这样做有什么负面影响?

我面临的问题是这样的:

  1. 我正在使用数据库缓存
  2. 我在处理请求时保存到缓存中
  3. 我在处理下一个请求时从缓存中检索

我希望它在缓存中,但它不存在。通过打印线程标识,我看到它是一个不同的线程。同一个线程获得缓存命中,但不同的线程获得缓存未命中。

我预计数据库缓存后端不会发生这种情况。

【问题讨论】:

    标签: django django-caching


    【解决方案1】:

    仅当您使用 locmem 缓存后端时才适用。你不应该在生产中做;使用适当的缓存,无论是文件系统或数据库缓存,还是像 memcached 或 redis 这样的专用缓存后端。

    【讨论】:

    • 来自文档:“为了提供线程安全,将为每个线程返回不同的缓存后端实例。”在调试过程中,我在实践中验证了这一点。
    • 是的,但这似乎不是您要问的。每个实例通常都指向同一个存储,因此它们可以访问相同的数据。
    • 使用数据库缓存读写是否必须使用锁?我还没有这样做。这可能是我的问题吗?
    • 我什至不知道你的问题是什么。你有什么问题?首先你有哪些线程?
    • stackoverflow.com/questions/23611737/… 似乎同意你的看法
    猜你喜欢
    • 2020-11-20
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多