You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整Django PyMemcacheCache缓存限制使其超过1MB

PyMemcacheCache 调整memcached单value大小限制正确配置方法

旧版MemcacheCache后端基于python-memcached库实现,配置大value阈值的参数是server_max_value_length,PyMemcacheCache后端底层依赖pymemcache库,参数名不通用,直接套用旧配置无法生效。

你当前docker配置中给memcached服务端添加-I 10m启动参数的操作是正确的,已经将服务端单条缓存的最大存储上限调整为10MB,只需修正Django侧客户端配置即可。

正确配置

将CACHES配置中OPTIONS的参数名改为pymemcache识别的max_value_length,数值与服务端10MB的配置对齐:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache',
        'LOCATION': 'cache:11211',
        'OPTIONS': {
            'max_value_length': 1024 * 1024 * 10
        }
    }
}

配置逻辑说明

  • PyMemcacheCache会将OPTIONS内的所有参数直接透传给底层pymemcache.Client构造函数,无额外参数拦截,需要查询可用OPTIONS时直接参考pymemcache库的Client初始化参数说明即可。
  • max_value_length是pymemcache客户端侧的校验参数,默认值为1024*1024(即1MB),待缓存内容超过该值时,客户端会直接抛出错误,不会向memcached服务端发送请求,这也是仅修改服务端配置时大value无法存入的核心原因。
  • 该参数的设置值不要超过memcached服务端-I参数指定的大小,否则客户端放行后服务端仍会拒绝存储。

生效验证

配置完成后进入Django shell,执行以下代码验证效果:

from django.core.cache import cache
# 写入2MB大小的测试值,有效期60秒
cache.set("large_value_test", "a" * 1024 * 1024 * 2, 60)
# 读取成功返回True即代表配置生效
print(cache.get("large_value_test") is not None)

返回True即代表大小限制调整生效,可正常缓存超过1MB的接口响应内容。


内容的提问来源于stack exchange,提问作者Peter Williams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 20:06:27