Laravel 关于 Redis 集群多环境配置的解决方案讨论咨询

这是项目开发中遇到的一个问题
redis集群各环境差异化
1、线上会有6台机器
2、测试环境只有4台

如何配置或者用什么方式能做到比较高效的进行配置,不会因为需要增加或减少redis集群的机器而 对 database.php 进行文件代码的修改
ps:看了下 symfony 一块,是一个配置项(长串的字符拼接),symfony自己进行解析数据处理的

用的是laravel自带的(PS:是自带的嘛?嗯,这不是重点..)predis配置使用的
相关配置:

#.env
REDIS_HOST_FIRST=1.2.3.101                                 #集群ip1
REDIS_HOST_SECOND=1.2.3.102                            #集群ip2
REDIS_TIMEOUT=10

#database.php
...
'redis' => [
    'clusters' => [
        'myCluster' => [
        [
            'host' => env('REDIS_HOST_FIRST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 7010),
            'database' => 0,
            'read_timeout' => env('REDIS_TIMEOUT', 5),
        ],
        ...// 省略此处重复6遍
    ]
]
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 1

临时解决方案吧。。。

#.env
REDIS_CLUSTERS=1.2.3.103:6001,6002,6003;1.2.3.104:6001,6002,6003
#database.php
$redisClusters = explode(';', env('REDIS_CLUSTERS'));
$clusters = [];
foreach ($redisClusters as $cluster) {
    $temp = explode(':', $cluster);
    $ports = explode(',', $temp[1]);
    foreach ($ports as $port) {
        $clusters[] = [
            'host' => $temp[0],
            'password' => env('REDIS_PASSWORD', null),
            'port' => $port,
            'database' => 0,
            'read_timeout' => env('REDIS_TIMEOUT', 5),
        ];
    }
}

.....
'redis' => [
   'clusters' => [
       'myCluster' => $clusters
   ]
]
2个月前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

社区文档:

将托管在 packagist.org 和 github.com 的扩展包使用国内 CDN 加速
GitHub Laravel 扩展包 TOP 250
速查表方便快速查询框架功能,支持手机访问,支持中英文版本
Laravel 中文文档,由社区用户翻译和维护,将会保持一直更新
此文档的目的,就是为了提高技术团队的凝聚力、一致性和生产效率。
开发环境的部署,开发者工具的选择,适用于 Mac 和 Windows。
浓缩过后的精华
Laravel Nova 后台管理面板文档的中文翻译
Lumen 中文文档,由社区用户翻译和维护,将会保持一直更新
Laravel 下知名扩展包 Dingo API 的中文文档,Laravel API 开发必知必会