【问题标题】:Laravel (phpredis) will not connect with password (AWS Elasticache)Laravel (phpredis) 将无法使用密码连接 (AWS Elasticache)
【发布时间】:2021-03-16 02:20:51
【问题描述】:

我在 AWS Elasticache 上有一个 Redis 6.x 实例。它是集群的,并且具有传输中的加密。我还设置了 RBAC(在 AWS 中使用密码的用户)。我可以使用redis-cli 进行连接,然后使用AUTH <password> 进行授权,效果很好。 (它使用 Redis 6 ACL 功能)

但是,当我将密码添加到我的 Laravel 配置时,我得到了错误:

无法使用任何提供的种子映射集群键空间

如果我从 Elasticache 中的用户那里删除密码,Laravel 连接良好并完美使用 Redis。

这是我的配置。我的 env 文件中的密码是正确的,并且由于集群,在默认连接和 options['parameters'] 键中都添加了密码。

'redis' => [

        'client' => 'phpredis',
        'cluster' => true,

        'clusters' => [
            'default' => [
              [
                'scheme' => 'tls',
                'host' => env('REDIS_HOST', '127.0.0.1'),
                'password' => env('REDIS_PASSWORD', null),
                'port' => env('REDIS_PORT', 6379),
                'database' => 0,
              ],
            ],

            'options' => [
                'cluster' => 'redis',
            ],
        ],


        'options' => [
            'parameters' => [
                'scheme' => 'tls',
                'password' => env('REDIS_PASSWORD', null),
            ],
            'ssl' => ['verify_peer' => false],
            'context' => [],
        ],

    ],

我以前见过这个错误,但它似乎是在发生不好的事情时发生,而不是给我具体细节。例如,如果我删除了密码,并限制了某些访问权限,如 SET 或 READ/WRITE 命令,那么我也会得到相同的错误,因此很难破译错误是什么。

【问题讨论】:

  • 这里有同样的问题吗?你能克服这个问题吗?

标签: laravel amazon-web-services redis amazon-elasticache


【解决方案1】:

你使用的是 Laravel 5 还是 6?

我们的设置与您的类似,但此解决方案似乎仅适用于 Laravel 6,但是当我使用相同的配置时,我遇到了与您在 Laravel 5 中相同的问题。

'redis' => [
    'client' => 'phpredis',
    'cluster' => true,
    'options' => [
        'cluster' => 'redis',
        'ssl' => ['verify_peer' => false],
        'context' => [],
        'password' => env('REDIS_PASSWORD', null),
        'parameters' => [
            'scheme' => env('REDIS_SCHEME', 'tls'),
        ],
    ],
    'clusters' => [
        'default' =>
            [
                [
                    'host' => env('REDIS_HOST', 'localhost'),
                    'password' => env('REDIS_PASSWORD', null),
                    'port' => env('REDIS_PORT', 6379),
                    'database' => env('REDIS_DATABASE', 0),
                    'persistent' => true,
                ],
            ],
        'options' => [
            'cluster' => 'redis',
        ]
    ],
],

现在要弄清楚如何让我的 Laravel 5 应用程序正常工作,(或者我只需要升级我的 Laravel 应用程序)。

【讨论】:

    猜你喜欢
    • 2018-01-22
    • 2018-12-04
    • 2018-05-21
    • 2020-11-01
    • 2018-05-18
    • 1970-01-01
    • 2020-06-26
    • 2016-11-20
    • 2018-12-29
    相关资源
    最近更新 更多