PredisConnector.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. namespace Illuminate\Redis\Connectors;
  3. use Illuminate\Contracts\Redis\Connector;
  4. use Illuminate\Redis\Connections\PredisClusterConnection;
  5. use Illuminate\Redis\Connections\PredisConnection;
  6. use Illuminate\Support\Arr;
  7. use Predis\Client;
  8. class PredisConnector implements Connector
  9. {
  10. /**
  11. * Create a new connection.
  12. *
  13. * @param array $config
  14. * @param array $options
  15. * @return \Illuminate\Redis\Connections\PredisConnection
  16. */
  17. public function connect(array $config, array $options)
  18. {
  19. $formattedOptions = array_merge(
  20. ['timeout' => 10.0], $options, Arr::pull($config, 'options', [])
  21. );
  22. if (isset($config['prefix'])) {
  23. $formattedOptions['prefix'] = $config['prefix'];
  24. }
  25. return new PredisConnection(new Client($config, $formattedOptions));
  26. }
  27. /**
  28. * Create a new clustered Predis connection.
  29. *
  30. * @param array $config
  31. * @param array $clusterOptions
  32. * @param array $options
  33. * @return \Illuminate\Redis\Connections\PredisClusterConnection
  34. */
  35. public function connectToCluster(array $config, array $clusterOptions, array $options)
  36. {
  37. $clusterSpecificOptions = Arr::pull($config, 'options', []);
  38. if (isset($config['prefix'])) {
  39. $clusterSpecificOptions['prefix'] = $config['prefix'];
  40. }
  41. return new PredisClusterConnection(new Client(array_values($config), array_merge(
  42. $options, $clusterOptions, $clusterSpecificOptions
  43. )));
  44. }
  45. }