遇到 Laravel Redis 的一个坑,分享下

最近学习 session,设置 session 的底层驱动是 redis,于是用了 laravel 默认的 redis 设置:


'redis' => [

        'client' => 'predis',


        'default' => [

            'host' => env('REDIS_HOST', '127.0.0.1'),

            'password' => env('REDIS_PASSWORD', null),

            'port' => env('REDIS_PORT', 6379),

            'database' => 0,

        ],

    ],

连接后发现被坑了,错误信息是:


Error while reading line from the server. [tcp://127.0.0.1:6379]

但是我用 php 的 redis 扩展 phpredis 连接毫无问题,于是我在网上查,发现大家的建议是加一个配置:


'redis' => [

        'client' => 'predis',


        'default' => [

            'host' => env('REDIS_HOST', '127.0.0.1'),

            'password' => env('REDIS_PASSWORD', null),

            'port' => env('REDIS_PORT', 6379),

            'database' => 0,

            'read_write_timeout' => 0,

        ],

    ],

然而发现并没有什么用。。。一度想要自定义 session 的驱动。。。


于是我只能跟着 predis 的代码一行一行的走,终于发现是这货:


   'database' => 0,

Copy

由于我的 redis 加了代理 Twemproxy,而 predis 对这个配置默认执行 select 操作,导致了连接错误。


大家以后要注意,如果 redis 有代理的话,别忘了把这个配置删掉。


————————————————

原文作者:leoyang

转自链接:https://learnku.com/laravel/t/6774/meet-a-pit-of-laravel-redis-share

版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。


有话要说