diff --git a/src/Providers/RedisProvider.php b/src/Providers/RedisProvider.php index 4175a27a..107832cf 100644 --- a/src/Providers/RedisProvider.php +++ b/src/Providers/RedisProvider.php @@ -6,6 +6,7 @@ use Phalcon\Di\DiInterface; use Phalcon\Di\ServiceProviderInterface; use Redis; +use RedisCluster; class RedisProvider implements ServiceProviderInterface { @@ -19,8 +20,18 @@ public function register(DiInterface $container) : void $container->setShared( 'redis', function (bool $prefix = true) use ($app) { - $redis = new Redis(); - $redis->connect(envValue('REDIS_HOST', '127.0.0.1'), (int) envValue('REDIS_PORT', 6379)); + if (!envValue('REDIS_CLUSTER', 0)) { + $redis = new Redis(); + $redis->connect( + envValue('REDIS_HOST', '127.0.0.1'), + (int) envValue('REDIS_PORT', 6379) + ); + } else { + $clusters = explode(',', envValue('REDIS_HOST', '127.0.0.1')); + $clusters = array_map('trim', $clusters); + + $redis = new RedisCluster(null, $clusters, 1.5, 1.5); + } if ($prefix) { $redis->setOption(Redis::OPT_PREFIX, $app . ':'); // use custom prefix on all keys } @@ -45,8 +56,19 @@ function (bool $prefix = true) use ($app) { $container->setShared( 'redisUnSerialize', function (bool $prefix = true) use ($app) { - $redis = new Redis(); - $redis->connect(envValue('REDIS_HOST', '127.0.0.1'), (int) envValue('REDIS_PORT', 6379)); + if (!envValue('REDIS_CLUSTER', 0)) { + $redis = new Redis(); + $redis->connect( + envValue('REDIS_HOST', '127.0.0.1'), + (int) envValue('REDIS_PORT', 6379) + ); + } else { + $clusters = explode(',', envValue('REDIS_HOST', '127.0.0.1')); + $clusters = array_map('trim', $clusters); + + $redis = new RedisCluster(null, $clusters, 1.5, 1.5); + } + if ($prefix) { $redis->setOption(Redis::OPT_PREFIX, $app . ':'); // use custom prefix on all keys }