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遍
    ]
]
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 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年前 评论

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