diff --git a/src/Illuminate/Redis/Connectors/PhpRedisConnector.php b/src/Illuminate/Redis/Connectors/PhpRedisConnector.php index fb79b6724f59..c4ded68ce4c6 100644 --- a/src/Illuminate/Redis/Connectors/PhpRedisConnector.php +++ b/src/Illuminate/Redis/Connectors/PhpRedisConnector.php @@ -74,6 +74,8 @@ protected function createClient(array $config) ); } + /* @var Redis $client */ + $this->establishConnection($client, $config); if (! empty($config['password'])) { @@ -91,6 +93,37 @@ protected function createClient(array $config) if (! empty($config['read_timeout'])) { $client->setOption(Redis::OPT_READ_TIMEOUT, $config['read_timeout']); } + if (! empty($config['serializer'])) { + $serializers = []; + + if (defined('Redis::SERIALIZER_NONE')) { + $serializers['none'] = Redis::SERIALIZER_NONE; + } + + if (defined('Redis::SERIALIZER_PHP')) { + $serializers['php'] = Redis::SERIALIZER_PHP; + } + + if (defined('Redis::SERIALIZER_IGBINARY')) { + $serializers['igbinary'] = Redis::SERIALIZER_IGBINARY; + } + + if (defined('Redis::SERIALIZER_MSGPACK')) { + $serializers['msgpack'] = Redis::SERIALIZER_MSGPACK; + } + + if (defined('Redis::SERIALIZER_JSON')) { + $serializers['json'] = Redis::SERIALIZER_JSON; + } + + if (in_array($config['serializer'], $serializers, true)) { + $client->setOption(Redis::OPT_SERIALIZER, $config['serializer']); + } elseif (in_array($config['serializer'], array_keys($serializers), true)) { + $client->setOption(Redis::OPT_SERIALIZER, $serializers[$config['serializer']]); + } else { + throw new \InvalidArgumentException('Wrong serializer configuration for Redis connection'); + } + } }); }