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遍
    ]
]
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

临时解决方案吧。。。

#.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
   ]
]
4年前 评论
讨论数量: 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
   ]
]
4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!