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

Laravel配置双Memcached服务器(会话/缓存分离)报错求助

Laravel配置双Memcached分别存储Session和Cache的问题解决

方案可行性说明

这个方案完全可行,Laravel支持通过多缓存存储实例实现Session和Cache分离使用不同的Memcached服务器,你当前的错误是因为Session驱动的配置方式不正确。

错误原因

你在.env中设置SESSION_DRIVER=memcachedz2,Laravel会将其识别为Session驱动类型,但Laravel原生并不存在名为memcachedz2的Session驱动,因此抛出Driver [memcachedz2] not supported错误。

解决步骤

1. 保留缓存配置(config/cache.php)

你在config/cache.php中定义的两个Memcached存储实例是正确的,无需修改:

'memcached' => [
    'driver' => 'memcached',
    'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
    'sasl' => [
        env('MEMCACHED_USERNAME'),
        env('MEMCACHED_PASSWORD'),
    ],
    'options' => [
        // Memcached::OPT_CONNECT_TIMEOUT => 2000,
    ],
    'servers' => [
        [
            'host' => env('MEMCACHED_HOST', '127.0.0.1'),
            'port' => env('MEMCACHED_PORT', 11211),
            'weight' => 100,
        ],
    ],
],

'memcachedz2' => [
    'driver' => 'memcached',
    'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
    'sasl' => [
        env('MEMCACHED_USERNAME'),
        env('MEMCACHED_PASSWORD'),
    ],
    'options' => [
        // Memcached::OPT_CONNECT_TIMEOUT => 2000,
    ],
    'servers' => [
        [
            'host' => env('MEMCACHED_HOST1', '127.0.0.1'),
            'port' => env('MEMCACHED_PORT1', 11211),
            'weight' => 100,
        ],
    ],
],

2. 调整Session配置

需要让Session使用cache驱动,并指定使用你定义的memcachedz2缓存实例:

方式一:通过.env配置

修改.env文件中的Session相关配置:

CACHE_DRIVER=memcached
CACHE_PREFIX=areviwez_cache
SESSION_DRIVER=cache
SESSION_CACHE_STORE=memcachedz2

MEMCACHED_HOST=35.192.75.119
MEMCACHED_PORT=11211

MEMCACHED_HOST1=127.0.0.1
MEMCACHED_PORT1=11211

方式二:直接修改config/session.php

打开config/session.php,修改driver和store参数:

'driver' => env('SESSION_DRIVER', 'cache'),
'store' => env('SESSION_CACHE_STORE', 'memcachedz2'),

3. 生效配置

执行以下命令清除配置缓存,确保新配置生效:

php artisan config:clear

验证方法

  • 可以分别向Cache和Session存入测试数据:
    // 存入Cache(使用memcached实例)
    Cache::put('test_cache', 'cache_value', 60);
    // 存入Session(使用memcachedz2实例)
    session(['test_session' => 'session_value']);
    
  • 登录对应的Memcached服务器,使用stats items等命令查看数据是否分别存储到了对应的服务器中。

内容的提问来源于stack exchange,提问作者Ahmadz Issa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:10:57