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

Laravel 10结合phpredis使用Redis Sentinel实现高可用是否可行?

Redis Sentinel适配Laravel及Horizon的配置方案

方案可行性说明

Laravel(含8+版本)配合Redis Sentinel实现高完全可用可行,Laravel 9+版本已原生支持Redis Sentinel,无需第三方驱动;若使用Laravel 8,可借助第三方驱动实现,只要配置正确即可正常工作。

Laravel 8第三方驱动正确配置步骤

1. 安装驱动

执行Composer命令安装依赖:

composer require monospice/laravel-redis-sentinel-drivers

2. 修改config/database.php的Redis配置

替换原有Redis配置块为以下内容,注意结构和参数对应:

'redis' => [
    'client' => 'phpredis',

    // 默认Redis连接(适配应用缓存、普通队列)
    'default' => [
        'driver' => 'sentinel',
        'sentinels' => [
            env('REDIS_SENTINEL_1', '127.0.0.1:26379'),
            env('REDIS_SENTINEL_2', '127.0.0.1:26380'),
            env('REDIS_SENTINEL_3', '127.0.0.1:26381'),
        ],
        'options' => [
            'service' => env('REDIS_SENTINEL_SERVICE', 'mymaster'),
            'parameters' => [
                'password' => env('REDIS_PASSWORD', null), // 这里填Redis主节点的密码,而非Sentinel的密码
                'database' => env('REDIS_DB', 0),
            ],
        ],
    ],

    // Horizon专属连接(建议单独分配数据库)
    'horizon' => [
        'driver' => 'sentinel',
        'sentinels' => [
            env('REDIS_SENTINEL_1', '127.0.0.1:26379'),
            env('REDIS_SENTINEL_2', '127.0.0.1:26380'),
            env('REDIS_SENTINEL_3', '127.0.0.1:26381'),
        ],
        'options' => [
            'service' => env('REDIS_SENTINEL_SERVICE', 'mymaster'),
            'parameters' => [
                'password' => env('REDIS_PASSWORD', null),
                'database' => env('REDIS_HORIZON_DB', 1),
            ],
        ],
    ],
],

3. 配置.env参数

补充或修改环境变量:

REDIS_SENTINEL_1=你的Sentinel节点1地址:端口
REDIS_SENTINEL_2=你的Sentinel节点2地址:端口
REDIS_SENTINEL_3=你的Sentinel节点3地址:端口
REDIS_SENTINEL_SERVICE=mymaster // 和你的Redis Sentinel集群配置的服务名一致
REDIS_PASSWORD=Redis主节点密码
REDIS_DB=0
REDIS_HORIZON_DB=1

4. 适配Horizon

修改config/horizon.php,让Horizon使用我们配置的专属连接:

'use' => 'horizon',

Laravel 9+原生配置方案

若能升级到Laravel 9及以上版本,无需第三方驱动,直接用官方原生配置:

'redis' => [
    'client' => 'phpredis',

    'default' => [
        'url' => env('REDIS_URL'),
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'username' => env('REDIS_USERNAME'),
        'password' => env('REDIS_PASSWORD'),
        'port' => env('REDIS_PORT', '6379'),
        'database' => env('REDIS_DB', '0'),
    ],

    'cache' => [
        'url' => env('REDIS_URL'),
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'username' => env('REDIS_USERNAME'),
        'password' => env('REDIS_PASSWORD'),
        'port' => env('REDIS_PORT', '6379'),
        'database' => env('REDIS_CACHE_DB', '1'),
    ],

    'options' => [
        'cluster' => env('REDIS_CLUSTER', 'redis'),
        'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
        'replication' => 'sentinel',
        'service' => env('REDIS_SENTINEL_SERVICE', 'mymaster'),
        'sentinels' => [
            [
                'host' => env('REDIS_SENTINEL_1', '127.0.0.1'),
                'port' => env('REDIS_SENTINEL_PORT', 26379),
                'username' => env('REDIS_SENTINEL_USERNAME'),
                'password' => env('REDIS_SENTINEL_PASSWORD'),
            ],
            [
                'host' => env('REDIS_SENTINEL_2', '127.0.0.1'),
                'port' => env('REDIS_SENTINEL_PORT', 26379),
                'username' => env('REDIS_SENTINEL_USERNAME'),
                'password' => env('REDIS_SENTINEL_PASSWORD'),
            ],
            [
                'host' => env('REDIS_SENTINEL_3', '127.0.0.1'),
                'port' => env('REDIS_SENTINEL_PORT', 26379),
                'username' => env('REDIS_SENTINEL_USERNAME'),
                'password' => env('REDIS_SENTINEL_PASSWORD'),
            ],
        ],
    ],
],

常见排查点

  • 确认应用服务器能访问所有Sentinel节点,端口(默认26379)未被防火墙拦截
  • 检查Sentinel集群配置的服务名(如mymaster)和配置文件中的service参数完全一致
  • 区分Sentinel自身的密码和Redis主节点的密码,不要混淆
  • 执行php artisan config:clear清除配置缓存,确保新配置生效
  • 在artisan tinker中执行Redis::connection()->ping()验证连接是否成功

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:30:31