@@ -44,8 +44,8 @@ trait RedisTrait
4444 'retry_interval ' => 0 ,
4545 'tcp_keepalive ' => 0 ,
4646 'lazy ' => null ,
47- 'redis_cluster ' => false ,
48- 'redis_sentinel ' => null ,
47+ 'cluster ' => false ,
48+ 'sentinel ' => null ,
4949 'dbindex ' => 0 ,
5050 'failover ' => 'none ' ,
5151 'ssl ' => null , // see https://php.net/context.ssl
@@ -87,13 +87,13 @@ private function init(\Redis|Relay|\RedisArray|\RedisCluster|\Predis\ClientInter
8787 */
8888 public static function createConnection (#[\SensitiveParameter] string $ dsn , array $ options = []): \Redis |\RedisArray |\RedisCluster |\Predis \ClientInterface |Relay
8989 {
90- if ( str_starts_with ( $ dsn , ' redis: ' ) ) {
91- $ scheme = 'redis ' ;
92- } elseif ( str_starts_with ($ dsn , 'rediss: ' )) {
93- $ scheme = ' rediss ' ;
94- } else {
95- throw new InvalidArgumentException ('Invalid Redis DSN: it does not start with "redis[s]:". ' );
96- }
90+ $ scheme = match ( true ) {
91+ str_starts_with ( $ dsn , ' redis: ' ) => 'redis: ' ,
92+ str_starts_with ($ dsn , 'rediss: ' ) => ' rediss: ' ,
93+ str_starts_with ( $ dsn , ' valkey: ' ) => ' valkey: ' ,
94+ str_starts_with ( $ dsn , ' valkeys: ' ) => ' valkeys: ' ,
95+ default => throw new InvalidArgumentException ('Invalid Redis DSN: it does not start with "redis[s]:" nor "valkey[s]:" . ' ),
96+ };
9797
9898 if (!\extension_loaded ('redis ' ) && !class_exists (\Predis \Client::class)) {
9999 throw new CacheException ('Cannot find the "redis" extension nor the "predis/predis" package. ' );
@@ -121,7 +121,7 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
121121
122122 $ query = $ hosts = [];
123123
124- $ tls = 'rediss ' === $ scheme ;
124+ $ tls = 'rediss ' === $ scheme || ' valkeys ' === $ scheme ;
125125 $ tcpScheme = $ tls ? 'tls ' : 'tcp ' ;
126126
127127 if (isset ($ params ['query ' ])) {
@@ -174,28 +174,24 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
174174
175175 $ params += $ query + $ options + self ::$ defaultConnectionOptions ;
176176
177- if (isset ($ params ['redis_sentinel ' ]) && isset ($ params ['sentinel_master ' ])) {
178- throw new InvalidArgumentException ('Cannot use both "redis_sentinel" and "sentinel_master" at the same time. ' );
179- }
180-
181- $ params ['redis_sentinel ' ] ??= $ params ['sentinel_master ' ] ?? null ;
177+ $ params ['sentinel ' ] ??= $ params ['sentinel_master ' ] ?? $ params ['redis_sentinel ' ] ?? null ;
182178
183- if (isset ($ params ['redis_sentinel ' ]) && !class_exists (\Predis \Client::class) && !class_exists (\RedisSentinel::class) && !class_exists (Sentinel::class)) {
179+ if (isset ($ params ['sentinel ' ]) && !class_exists (\Predis \Client::class) && !class_exists (\RedisSentinel::class) && !class_exists (Sentinel::class)) {
184180 throw new CacheException ('Redis Sentinel support requires one of: "predis/predis", "ext-redis >= 5.2", "ext-relay". ' );
185181 }
186182
187183 if (isset ($ params ['lazy ' ])) {
188184 $ params ['lazy ' ] = filter_var ($ params ['lazy ' ], \FILTER_VALIDATE_BOOLEAN );
189185 }
190- $ params ['redis_cluster ' ] = filter_var ($ params ['redis_cluster ' ], \FILTER_VALIDATE_BOOLEAN );
186+ $ params ['cluster ' ] = filter_var ($ params ['cluster ' ] ?? $ params [ ' redis_cluster ' ] ?? null , \FILTER_VALIDATE_BOOLEAN );
191187
192- if ($ params ['redis_cluster ' ] && isset ($ params ['redis_sentinel ' ])) {
193- throw new InvalidArgumentException ('Cannot use both "redis_cluster " and "redis_sentinel " at the same time. ' );
188+ if ($ params ['cluster ' ] && isset ($ params ['sentinel ' ])) {
189+ throw new InvalidArgumentException ('Cannot use both "cluster " and "sentinel " at the same time. ' );
194190 }
195191
196192 $ class = $ params ['class ' ] ?? match (true ) {
197- $ params ['redis_cluster ' ] => \extension_loaded ('redis ' ) ? \RedisCluster::class : \Predis \Client::class,
198- isset ($ params ['redis_sentinel ' ]) => match (true ) {
193+ $ params ['cluster ' ] => \extension_loaded ('redis ' ) ? \RedisCluster::class : \Predis \Client::class,
194+ isset ($ params ['sentinel ' ]) => match (true ) {
199195 \extension_loaded ('redis ' ) => \Redis::class,
200196 \extension_loaded ('relay ' ) => Relay::class,
201197 default => \Predis \Client::class,
@@ -206,7 +202,7 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
206202 default => \Predis \Client::class,
207203 };
208204
209- if (isset ($ params ['redis_sentinel ' ]) && !is_a ($ class , \Predis \Client::class, true ) && !class_exists (\RedisSentinel::class) && !class_exists (Sentinel::class)) {
205+ if (isset ($ params ['sentinel ' ]) && !is_a ($ class , \Predis \Client::class, true ) && !class_exists (\RedisSentinel::class) && !class_exists (Sentinel::class)) {
210206 throw new CacheException (\sprintf ('Cannot use Redis Sentinel: class "%s" does not extend "Predis\Client" and neither ext-redis >= 5.2 nor ext-relay have been found. ' , $ class ));
211207 }
212208
@@ -230,7 +226,7 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
230226 $ host = 'tls:// ' .$ host ;
231227 }
232228
233- if (!isset ($ params ['redis_sentinel ' ])) {
229+ if (!isset ($ params ['sentinel ' ])) {
234230 break ;
235231 }
236232
@@ -256,15 +252,15 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
256252 $ sentinel = @new $ sentinelClass ($ host , $ port , $ params ['timeout ' ], (string ) $ params ['persistent_id ' ], $ params ['retry_interval ' ], $ params ['read_timeout ' ], ...$ extra );
257253 }
258254
259- if ($ address = @$ sentinel ->getMasterAddrByName ($ params ['redis_sentinel ' ])) {
255+ if ($ address = @$ sentinel ->getMasterAddrByName ($ params ['sentinel ' ])) {
260256 [$ host , $ port ] = $ address ;
261257 }
262258 } catch (\RedisException |\Relay \Exception $ redisException ) {
263259 }
264260 } while (++$ hostIndex < \count ($ hosts ) && !$ address );
265261
266- if (isset ($ params ['redis_sentinel ' ]) && !$ address ) {
267- throw new InvalidArgumentException (\sprintf ('Failed to retrieve master information from sentinel "%s". ' , $ params ['redis_sentinel ' ]), previous: $ redisException ?? null );
262+ if (isset ($ params ['sentinel ' ]) && !$ address ) {
263+ throw new InvalidArgumentException (\sprintf ('Failed to retrieve master information from sentinel "%s". ' , $ params ['sentinel ' ]), previous: $ redisException ?? null );
268264 }
269265
270266 try {
@@ -379,11 +375,11 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
379375
380376 $ redis = $ params ['lazy ' ] ? RedisClusterProxy::createLazyProxy ($ initializer ) : $ initializer ();
381377 } elseif (is_a ($ class , \Predis \ClientInterface::class, true )) {
382- if ($ params ['redis_cluster ' ]) {
378+ if ($ params ['cluster ' ]) {
383379 $ params ['cluster ' ] = 'redis ' ;
384- } elseif (isset ($ params ['redis_sentinel ' ])) {
380+ } elseif (isset ($ params ['sentinel ' ])) {
385381 $ params ['replication ' ] = 'sentinel ' ;
386- $ params ['service ' ] = $ params ['redis_sentinel ' ];
382+ $ params ['service ' ] = $ params ['sentinel ' ];
387383 }
388384 $ params += ['parameters ' => []];
389385 $ params ['parameters ' ] += [
@@ -411,7 +407,7 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
411407 }
412408 }
413409
414- if (1 === \count ($ hosts ) && !($ params ['redis_cluster ' ] || $ params ['redis_sentinel ' ])) {
410+ if (1 === \count ($ hosts ) && !($ params ['cluster ' ] || $ params ['sentinel ' ])) {
415411 $ hosts = $ hosts [0 ];
416412 } elseif (\in_array ($ params ['failover ' ], ['slaves ' , 'distribute ' ], true ) && !isset ($ params ['replication ' ])) {
417413 $ params ['replication ' ] = true ;
@@ -420,7 +416,7 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
420416 $ params ['exceptions ' ] = false ;
421417
422418 $ redis = new $ class ($ hosts , array_diff_key ($ params , self ::$ defaultConnectionOptions ));
423- if (isset ($ params ['redis_sentinel ' ])) {
419+ if (isset ($ params ['sentinel ' ])) {
424420 $ redis ->getConnection ()->setSentinelTimeout ($ params ['timeout ' ]);
425421 }
426422 } elseif (class_exists ($ class , false )) {
0 commit comments