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

如何配置Memcached存储超默认大小缓存?Yii2缓存报错求助

解决Memcached存储大对象失败及Windows下配置无效问题

问题背景

使用Yii2框架开发时,为减少数据库交互,尝试将70万+行精简后(约25MB)的数据存入Memcached缓存,持续触发以下错误:

MemcachePool::set(): Server 127.0.0.1 (tcp 11211, udp 0) failed with: SERVER_ERROR object too large for cache (3)

尝试的无效操作及异常

  • 执行命令 memcached -I 128m 调整单个对象最大限制,仅收到警告且配置不生效:

    WARNING: Setting item max size above 1MB is not recommended! Raising this limit increases the minimum memory requirements and will decrease your memory efficiency.

  • 执行该命令后Memcached卡顿,需按CTRL+C终止;执行memcached --version无输出
  • 修改注册表中ImagePath为c:\memcached\memcached.exe" -d runservice -m 2048,配置仍未生效

当前Yii2缓存组件配置

'cache' => [
     'class' => 'yii\caching\MemCache',
     'servers' => [
          [
              'host' => '127.0.0.1',
              'port' => '11211'
          ]
     ]
]

运行环境

  • Windows 11
  • XAMPP v7.4.30
  • PHP 7.4
  • Yii2框架

正确配置步骤(Windows平台)

  1. 停止Memcached服务
    打开管理员权限的命令提示符,执行:

    net stop memcached
    
  2. 修改服务启动参数

    • 打开注册表编辑器:执行regedit
    • 定位到路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached
    • 找到ImagePath键值,修改为(注意替换为你的实际安装路径):
      "c:\memcached\memcached.exe" -d runservice -m 2048 -I 128m
      
      说明:
      • -m 2048:设置Memcached总可用内存为2048MB
      • -I 128m:设置单个缓存对象的最大大小为128MB(大写字母I,不是小写L)
  3. 重启服务并验证
    执行命令重启服务:

    net start memcached
    

    可通过执行memcached -h验证服务是否正常(能输出帮助信息则说明配置生效),或用PHP代码测试大对象存储:

    $memcache = new Memcache();
    $memcache->connect('127.0.0.1', 11211);
    // 生成25MB左右的测试数据
    $testData = str_repeat('x', 25 * 1024 * 1024);
    if ($memcache->set('test_big_obj', $testData, 0, 3600)) {
        echo "大对象存储成功";
    } else {
        echo "存储失败:" . $memcache->getResultMessage();
    }
    

优化建议

Memcached并非为存储超大对象设计,调大限制会降低内存效率,建议:

  • 拆分缓存项:按业务维度(如ID区间、分类)将大数据拆分为多个小缓存键
  • 缓存核心数据:仅缓存高频访问的热点数据,避免全量存储
  • 替换为Redis:Redis对大对象支持更友好,同时提供丰富的数据结构适配复杂业务场景

内容的提问来源于stack exchange,提问作者Irvan Hilmi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:15:27