带有laravel 5.5的Predis;"Aggregate/RedisCluster.php:337中的池中没有可用的连接"; [英] Predis with laravel 5.5 "No connections available in the pool in Aggregate/RedisCluster.php:337 "

查看:59
本文介绍了带有laravel 5.5的Predis;"Aggregate/RedisCluster.php:337中的池中没有可用的连接";的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用Laravel 5.5和Predis软件包在Amazon ElastiCache上设置了redis-cluster进行缓存,我得到以下错误.

I've setup redis-cluster on Amazon ElastiCache for cache, using Laravel 5.5 and Predis package, I get the following error.

Predis\ClientException: No connections available in the pool in vendor/predis/predis/src/Connection/Aggregate/RedisCluster.php:337 

踪迹: Predis \ ClientException:vendor/predis/predis/src/Connection/Aggregate/RedisCluster.php:337

Trace: Predis\ClientException: No connections available in the pool in vendor/predis/predis/src/Connection/Aggregate/RedisCluster.php:337

堆栈跟踪:

0 vendor/predis/predis/src/Connection/Aggregate/RedisCluster.php(411): Predis \ Connection \ Aggregate \ RedisCluster-> guessNode(153)

0 vendor/predis/predis/src/Connection/Aggregate/RedisCluster.php(411): Predis\Connection\Aggregate\RedisCluster->guessNode(153)

1供应商/predis/predis/src/Connection/Aggregate/RedisCluster.php(388): Predis \ Connection \ Aggregate \ RedisCluster-> getConnectionBySlot(153​​)

1 vendor/predis/predis/src/Connection/Aggregate/RedisCluster.php(388): Predis\Connection\Aggregate\RedisCluster->getConnectionBySlot(153)

2 vendor/predis/predis/src/Connection/Aggregate/RedisCluster.php(550): Predis \ Connection \ Aggregate \ RedisCluster-> getConnection(Object(Predis \ Command \ StringSetExpire))

2 vendor/predis/predis/src/Connection/Aggregate/RedisCluster.php(550): Predis\Connection\Aggregate\RedisCluster->getConnection(Object(Predis\Command\StringSetExpire))

3 vendor/predis/predis/src/Connection/Aggregate/RedisCluster.php(593): Predis \ Connection \ Aggregate \ RedisCluster-> retryCommandOnFailure(Object(Predis \ Command \ StringSetExpire), 'executeCommand')

3 vendor/predis/predis/src/Connection/Aggregate/RedisCluster.php(593): Predis\Connection\Aggregate\RedisCluster->retryCommandOnFailure(Object(Predis\Command\StringSetExpire), 'executeCommand')

4 vendor/predis/predis/src/Client.php(331):Predis \ Connection \ Aggregate \ RedisCluster-> executeCommand(Object(Predis \ Command \ StringSetExpire))

4 vendor/predis/predis/src/Client.php(331): Predis\Connection\Aggregate\RedisCluster->executeCommand(Object(Predis\Command\StringSetExpire))

5 vendor/predis/predis/src/Client.php(314):Predis \ Client-> executeCommand(Object(Predis \ Command \ StringSetExpire))

5 vendor/predis/predis/src/Client.php(314): Predis\Client->executeCommand(Object(Predis\Command\StringSetExpire))

6供应商/laravel/framework/src/Illuminate/Redis/Connections/Connection.php(96): Predis \ Client-> __ call('setex',Array)

6 vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php(96): Predis\Client->__call('setex', Array)

7供应商/laravel/framework/src/Illuminate/Redis/Connections/Connection.php(108): Illuminate \ Redis \ Connections \ Connection-> command('setex',Array)

7 vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php(108): Illuminate\Redis\Connections\Connection->command('setex', Array)

8 vendor/laravel/framework/src/Illuminate/Cache/RedisStore.php(93):Illuminate \ Redis \ Connections \ Connection-> __ call('setex',Array)

8 vendor/laravel/framework/src/Illuminate/Cache/RedisStore.php(93): Illuminate\Redis\Connections\Connection->__call('setex', Array)

9 vendor/laravel/framework/src/Illuminate/Cache/Repository.php(195):Illuminate \ Cache \ RedisStore-> put('5rr44TBjIPEgJSx ...', 'a:1:{s:6:"_ flas ...',480)

9 vendor/laravel/framework/src/Illuminate/Cache/Repository.php(195): Illuminate\Cache\RedisStore->put('5rr44TBjIPEgJSx...', 'a:1:{s:6:"_flas...', 480)

10供应商/laravel/framework/src/Illuminate/Session/CacheBasedSessionHandler.php(66): Illuminate \ Cache \ Repository-> put('5rr44TBjIPEgJSx ...', 'a:1:{s:6:"_ flas ...',480)

10 vendor/laravel/framework/src/Illuminate/Session/CacheBasedSessionHandler.php(66): Illuminate\Cache\Repository->put('5rr44TBjIPEgJSx...', 'a:1:{s:6:"_flas...', 480)

11 vendor/laravel/framework/src/Illuminate/Session/Store.php(128):Illuminate \ Session \ CacheBasedSessionHandler-> write('5rr44TBjIPEgJSx ... ,, 'a:1:{s:6:"_ flas ...')

11 vendor/laravel/framework/src/Illuminate/Session/Store.php(128): Illuminate\Session\CacheBasedSessionHandler->write('5rr44TBjIPEgJSx...', 'a:1:{s:6:"_flas...')

12供应商/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(87): 照亮\ Session \ Store-> save()

12 vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(87): Illuminate\Session\Store->save()

13供应商/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(218): Illuminate \ Session \ Middleware \ StartSession->终止(Object(Illuminate \ Http \ Request), 对象(Illuminate \ Http \ Response))

13 vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(218): Illuminate\Session\Middleware\StartSession->terminate(Object(Illuminate\Http\Request), Object(Illuminate\Http\Response))

14供应商/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(189): Illuminate \ Foundation \ Http \ Kernel-> terminateMiddleware(Object(Illuminate \ Http \ Request), 对象(Illuminate \ Http \ Response))

14 vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(189): Illuminate\Foundation\Http\Kernel->terminateMiddleware(Object(Illuminate\Http\Request), Object(Illuminate\Http\Response))

15 public/index.php(58):照亮\ Foundation \ Http \内核->终止(Object(Illuminate \ Http \ Request), 对象(Illuminate \ Http \ Response))

15 public/index.php(58): Illuminate\Foundation\Http\Kernel->terminate(Object(Illuminate\Http\Request), Object(Illuminate\Http\Response))

16 {main}

16 {main}

我使用的技术堆栈:

  • PHP7.0
  • Laravel5.5
  • OS(Debian GNU/Linux 9.6(拉伸)),版本9.6

我在config/database.php中尝试了以下配置:

I tried the following configs in config/database.php:

redis=> [
'client'  => 'predis',
        'options' => [
            'cluster' => 'redis',
        ],
        'clusters' => [
            'default' => [
                [
                    'host' => env('REDIS_CLUSTER_HOST', 'localhost'),
                    'password' => env('REDIS_CLUSTER_PASSWORD', null),
                    'port' => env('REDIS_CLUSTER_PORT', 6379),
                    'database' => 0,
                ],
            ],
            'cache' => [
                [
                    'host' => env('REDIS_CLUSTER_HOST', 'localhost'),
                    'password' => env('REDIS_CLUSTER_PASSWORD', null),
                    'port' => env('REDIS_CLUSTER_PORT', 6379),
                    'database' => 0,
                ],
            ],
        ]
]

我也尝试了timeout => 0 | 5 | 60,但是每次遇到相同的错误.

I also tried with timeout => 0|5|60 but every time I get the same error.

任何帮助将不胜感激!

推荐答案

这正在我们的环境中进行:

This is working in in our env:

    'redis' => [
         'cluster' => true,

         'client' => 'predis',

         'options' => [
             'cluster' => 'redis',
             'parameters' => [
                 'scheme'   => env('REDIS_SCHEME', 'tcp'),
                 'host'     => env('REDIS_HOST', 'localhost'),
                 'password' => env('REDIS_PASSWORD', null),
                 'port'     => env('REDIS_PORT', 6379),
                 'database' => 0,
                 'timeout' => 15,
              ],
         ],

         'clusters' => [

             'default' => [
                 'scheme'   => env('REDIS_SCHEME', 'tcp'),
                 'host'     => env('REDIS_HOST', 'localhost'),
                 'password' => env('REDIS_PASSWORD', null),
                 'port'     => env('REDIS_PORT', 6379),
                 'database' => 0,
                 'timeout' => 15,
             ],
         ],
     ],

基于此处找到的信息: https://github.com/nrk/predis/issues /480 -但还需要复制选项->参数组

Based on info found here: https://github.com/nrk/predis/issues/480 - but needed to also replicate all 'default' config values in the options -> parameters group

REDIS_HOST指向AWS Elasticache的Redis集群中的配置端点.

REDIS_HOST, is pointing to the configuration endpoint in AWS elasticache's redis cluster.

这篇关于带有laravel 5.5的Predis;"Aggregate/RedisCluster.php:337中的池中没有可用的连接";的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆