From 2092906daf4dae05520387e5ec3f54f3b23a509a Mon Sep 17 00:00:00 2001 From: Kirill Naumenko Date: Mon, 16 Sep 2019 12:09:00 +0300 Subject: [PATCH 1/2] Support for serializers in PhpRedis connection Added support for "none", "php", "igbinary", "msgpack", "json" serializers configuration support for PhpRedis connection --- .../Redis/Connectors/PhpRedisConnector.php | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/Illuminate/Redis/Connectors/PhpRedisConnector.php b/src/Illuminate/Redis/Connectors/PhpRedisConnector.php index fb79b6724f59..64d038bc2c04 100644 --- a/src/Illuminate/Redis/Connectors/PhpRedisConnector.php +++ b/src/Illuminate/Redis/Connectors/PhpRedisConnector.php @@ -91,6 +91,28 @@ protected function createClient(array $config) if (! empty($config['read_timeout'])) { $client->setOption(Redis::OPT_READ_TIMEOUT, $config['read_timeout']); } + if (! empty($config['serializer'])) { + $serializers = [ + //Redis::SERIALIZER_NONE + 'none' => 0, + //Redis::SERIALIZER_PHP + 'php' => 1, + //Redis::SERIALIZER_IGBINARY + 'igbinary' => 2, + //Redis::SERIALIZER_MSGPACK + 'msgpack' => 3, + //Redis::SERIALIZER_JSON + 'json' => 4, + ]; + + if (in_array($config['serializer'], $serializers)) { + $client->setOption(Redis::OPT_SERIALIZER, $config['serializer'], true); + } elseif (in_array($config['serializer'], array_keys($serializers))) { + $client->setOption(Redis::OPT_SERIALIZER, $serializers[$config['serializer']], true); + } else { + throw new \InvalidArgumentException('Wrong serializer configuration for Redis connection'); + } + } }); } From 347127b6ca0a62dd30b8f481d04823d9c9857abf Mon Sep 17 00:00:00 2001 From: Kirill Naumenko Date: Mon, 16 Sep 2019 19:43:13 +0300 Subject: [PATCH 2/2] Added constants checks and typo bugfix --- .../Redis/Connectors/PhpRedisConnector.php | 45 ++++++++++++------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/src/Illuminate/Redis/Connectors/PhpRedisConnector.php b/src/Illuminate/Redis/Connectors/PhpRedisConnector.php index 64d038bc2c04..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'])) { @@ -92,23 +94,32 @@ protected function createClient(array $config) $client->setOption(Redis::OPT_READ_TIMEOUT, $config['read_timeout']); } if (! empty($config['serializer'])) { - $serializers = [ - //Redis::SERIALIZER_NONE - 'none' => 0, - //Redis::SERIALIZER_PHP - 'php' => 1, - //Redis::SERIALIZER_IGBINARY - 'igbinary' => 2, - //Redis::SERIALIZER_MSGPACK - 'msgpack' => 3, - //Redis::SERIALIZER_JSON - 'json' => 4, - ]; - - if (in_array($config['serializer'], $serializers)) { - $client->setOption(Redis::OPT_SERIALIZER, $config['serializer'], true); - } elseif (in_array($config['serializer'], array_keys($serializers))) { - $client->setOption(Redis::OPT_SERIALIZER, $serializers[$config['serializer']], true); + $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'); }