【问题标题】:Why would Django's cache work with locmem but fail with memcached?为什么 Django 的缓存可以与 locmem 一起使用,但在 memcached 下会失败?
【发布时间】:2010-11-09 05:15:58
【问题描述】:

将 Django 的缓存与 locmem 一起使用(将简单的 Python 类作为存储在列表/元组/映射中的值)完美地工作,但不适用于 memcached。

只有一小部分键(尽管分配了充足的内存和大量超时)进入 memcached,而且它们似乎都没有任何关联的值。

当它们被检索到时,不会返回任何值,它们会从缓存中删除。

强制使用“hi”值会使出现在缓存中的那些可以检索,但不能解释为什么大多数键根本不存在。

问题:

  1. 即使所有值都设置为“hi”,为什么只有某些键会出现在 memcached 中,而其他键不会?
  2. 有没有办法启用更多的日志记录或错误报告? (一切似乎都在默默地失败)
  3. 为什么 Python 类正确序列化为 locmem,但最终没有进入 Memcached?

【问题讨论】:

    标签: python django caching memcached


    【解决方案1】:

    要了解发生了什么,请运行 memcached -vv 2>/tmp/mc_debug_log(我假设您使用的是某种 Unixy 系统)并运行它时间 - 您会发现详细信息完成后该日志文件中的信息。

    根据您使用的 memcached 的 Python 接口,可能只支持字符串作为值(如在 cmemcache 中的 StringClient 模块中)或所有可腌制对象(带有腌制和解封的开销)当然),就像在同一个 cmemcache 中更通用的 Client 模块,GAE 的 memcachepython-memcached;如果您只能使用字符串作为值,大概您使用的是前一种类型的接口?

    【讨论】:

      【解决方案2】:

      显然,键中不能有空格:

      http://code.djangoproject.com/ticket/6447
      http://blog.pos.thum.us/2009/05/22/memcached-keys-cant-have-spaces-in-them/

      一旦我使用了一个带有空格的键,一切都变得不可预测。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-17
        • 2015-09-17
        • 1970-01-01
        • 2021-01-19
        • 1970-01-01
        • 2019-06-19
        • 1970-01-01
        • 2017-05-16
        相关资源
        最近更新 更多