1

使用 AWS Elasticache Redis 集群设置 Laravel 8.x 缓存:

我已经尝试了很多我发现的配置。但它们都不起作用。

我尝试从 redis-cli 连接 Elasticache Redis 集群,它适用于 Ping pong。

但不能与 laravel 一起使用:(错误:池中没有可用的连接

错误

这是我的配置:

'redis' => [
        'cluster' => true,
        'client' => env('REDIS_CLIENT', 'predis'),

        'options' => [
            'cluster' => env('REDIS_CLUSTER', 'redis'),
            'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_database_'),

            // 'ssl' => ['verify_peer' => false], => have tried, it not working
            /*
            'parameters' => [ => have tried, it not working
                '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' => env('REDIS_CACHE_DB', 0),
                    'read_write_timeout' => 30,
                ],
            ],
            'cache' => [
                [
                    'scheme'   => env('REDIS_SCHEME', 'tcp'),
                    'host' => env('REDIS_HOST', '127.0.0.1'),
                    'password' => env('REDIS_PASSWORD', null),
                    'port' => env('REDIS_PORT', 6379),
                    'database' => env('REDIS_CACHE_DB', 1),
                ]
            ],
            'options' =>[
                'cluster' =>'redis',
            ]
        ],
    ],

我曾尝试在 Ec2 中将 Elasticache 与 Redis cli 连接,它可以连接: 在此处输入图像描述

这是 Elasticache Redis 信息: 在此处输入图像描述

这是我的 .env:

CACHE_DRIVER=redis

REDIS_HOST=xxxxx.xxxxx.clustercfg.xxxxx.cache.amazonaws.com
REDIS_PASSWORD=null
REDIS_PORT=6379

顺便说一句,我与配置端点(不是主端点)连接,并且我在 composer.json中安装了“ predis/predis ”。

我更改了很多我在谷歌上找到的配置,但它不起作用。请帮忙!!

谢谢阅读。

4

1 回答 1

0

解决方案:使用 **phpredis ** 进行更改,它可以工作:

  1. 在服务器中安装 php-redis:
sudo yum -y install php-redis
sudo systemctl restart php-fpm.service
  1. 更改配置:
  'redis' => [

        'client' => env('REDIS_CLIENT', 'phpredis'),
       ....
]

不知道为什么它不适用于predis。虽然配置是一样的。

于 2021-06-02T02:23:54.303 回答