EVOLUTION-MANAGER
Edit File: RedisManager.php
<?php namespace Illuminate\Redis; use Illuminate\Support\Arr; use InvalidArgumentException; use Illuminate\Contracts\Redis\Factory; /** * @mixin \Illuminate\Redis\Connections\Connection */ class RedisManager implements Factory { /** * The name of the default driver. * * @var string */ protected $driver; /** * The Redis server configurations. * * @var array */ protected $config; /** * The Redis connections. * * @var mixed */ protected $connections; /** * Create a new Redis manager instance. * * @param string $driver * @param array $config */ public function __construct($driver, array $config) { $this->driver = $driver; $this->config = $config; } /** * Get a Redis connection by name. * * @param string|null $name * @return \Illuminate\Redis\Connections\Connection */ public function connection($name = null) { $name = $name ?: 'default'; if (isset($this->connections[$name])) { return $this->connections[$name]; } return $this->connections[$name] = $this->resolve($name); } /** * Resolve the given connection by name. * * @param string|null $name * @return \Illuminate\Redis\Connections\Connection * * @throws \InvalidArgumentException */ public function resolve($name = null) { $name = $name ?: 'default'; $options = Arr::get($this->config, 'options', []); if (isset($this->config[$name])) { return $this->connector()->connect($this->config[$name], $options); } if (isset($this->config['clusters'][$name])) { return $this->resolveCluster($name); } throw new InvalidArgumentException( "Redis connection [{$name}] not configured." ); } /** * Resolve the given cluster connection by name. * * @param string $name * @return \Illuminate\Redis\Connections\Connection */ protected function resolveCluster($name) { $clusterOptions = Arr::get($this->config, 'clusters.options', []); return $this->connector()->connectToCluster( $this->config['clusters'][$name], $clusterOptions, Arr::get($this->config, 'options', []) ); } /** * Get the connector instance for the current driver. * * @return \Illuminate\Redis\Connectors\PhpRedisConnector|\Illuminate\Redis\Connectors\PredisConnector */ protected function connector() { switch ($this->driver) { case 'predis': return new Connectors\PredisConnector; case 'phpredis': return new Connectors\PhpRedisConnector; } } /** * Pass methods onto the default Redis connection. * * @param string $method * @param array $parameters * @return mixed */ public function __call($method, $parameters) { return $this->connection()->{$method}(...$parameters); } }