@@ -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_master ' => 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 ' ])) {
@@ -178,24 +178,24 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
178178 throw new InvalidArgumentException ('Cannot use both "redis_sentinel" and "sentinel_master" at the same time. ' );
179179 }
180180
181- $ params ['redis_sentinel ' ] ??= $ params ['sentinel_master ' ] ?? null ;
181+ $ params ['sentinel_master ' ] ??= $ params ['redis_sentinel ' ] ?? null ;
182182
183- if (isset ($ params ['redis_sentinel ' ]) && !class_exists (\Predis \Client::class) && !class_exists (\RedisSentinel::class) && !class_exists (Sentinel::class)) {
183+ if (isset ($ params ['sentinel_master ' ]) && !class_exists (\Predis \Client::class) && !class_exists (\RedisSentinel::class) && !class_exists (Sentinel::class)) {
184184 throw new CacheException ('Redis Sentinel support requires one of: "predis/predis", "ext-redis >= 5.2", "ext-relay". ' );
185185 }
186186
187187 if (isset ($ params ['lazy ' ])) {
188188 $ params ['lazy ' ] = filter_var ($ params ['lazy ' ], \FILTER_VALIDATE_BOOLEAN );
189189 }
190- $ params ['redis_cluster ' ] = filter_var ($ params ['redis_cluster ' ], \FILTER_VALIDATE_BOOLEAN );
190+ $ params ['cluster ' ] = filter_var ( $ params [ ' cluster ' ], \ FILTER_VALIDATE_BOOLEAN ) || filter_var ($ params ['redis_cluster ' ], \FILTER_VALIDATE_BOOLEAN );
191191
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. ' );
192+ if ($ params ['cluster ' ] && isset ($ params ['sentinel_master ' ])) {
193+ throw new InvalidArgumentException ('Cannot use both "cluster " and "sentinel " at the same time. ' );
194194 }
195195
196196 $ class = $ params ['class ' ] ?? match (true ) {
197- $ params ['redis_cluster ' ] => \extension_loaded ('redis ' ) ? \RedisCluster::class : \Predis \Client::class,
198- isset ($ params ['redis_sentinel ' ]) => match (true ) {
197+ $ params ['cluster ' ] => \extension_loaded ('redis ' ) ? \RedisCluster::class : \Predis \Client::class,
198+ isset ($ params ['sentinel_master ' ]) => match (true ) {
199199 \extension_loaded ('redis ' ) => \Redis::class,
200200 \extension_loaded ('relay ' ) => Relay::class,
201201 default => \Predis \Client::class,
@@ -206,7 +206,7 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
206206 default => \Predis \Client::class,
207207 };
208208
209- if (isset ($ params ['redis_sentinel ' ]) && !is_a ($ class , \Predis \Client::class, true ) && !class_exists (\RedisSentinel::class) && !class_exists (Sentinel::class)) {
209+ if (isset ($ params ['sentinel_master ' ]) && !is_a ($ class , \Predis \Client::class, true ) && !class_exists (\RedisSentinel::class) && !class_exists (Sentinel::class)) {
210210 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 ));
211211 }
212212
@@ -230,7 +230,7 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
230230 $ host = 'tls:// ' .$ host ;
231231 }
232232
233- if (!isset ($ params ['redis_sentinel ' ])) {
233+ if (!isset ($ params ['sentinel_master ' ])) {
234234 break ;
235235 }
236236
@@ -256,15 +256,15 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
256256 $ sentinel = @new $ sentinelClass ($ host , $ port , $ params ['timeout ' ], (string ) $ params ['persistent_id ' ], $ params ['retry_interval ' ], $ params ['read_timeout ' ], ...$ extra );
257257 }
258258
259- if ($ address = @$ sentinel ->getMasterAddrByName ($ params ['redis_sentinel ' ])) {
259+ if ($ address = @$ sentinel ->getMasterAddrByName ($ params ['sentinel_master ' ])) {
260260 [$ host , $ port ] = $ address ;
261261 }
262262 } catch (\RedisException |\Relay \Exception $ redisException ) {
263263 }
264264 } while (++$ hostIndex < \count ($ hosts ) && !$ address );
265265
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 );
266+ if (isset ($ params ['sentinel_master ' ]) && !$ address ) {
267+ throw new InvalidArgumentException (\sprintf ('Failed to retrieve master information from sentinel "%s". ' , $ params ['sentinel_master ' ]), previous: $ redisException ?? null );
268268 }
269269
270270 try {
@@ -379,11 +379,11 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
379379
380380 $ redis = $ params ['lazy ' ] ? RedisClusterProxy::createLazyProxy ($ initializer ) : $ initializer ();
381381 } elseif (is_a ($ class , \Predis \ClientInterface::class, true )) {
382- if ($ params ['redis_cluster ' ]) {
382+ if ($ params ['cluster ' ]) {
383383 $ params ['cluster ' ] = 'redis ' ;
384- } elseif (isset ($ params ['redis_sentinel ' ])) {
384+ } elseif (isset ($ params ['sentinel_master ' ])) {
385385 $ params ['replication ' ] = 'sentinel ' ;
386- $ params ['service ' ] = $ params ['redis_sentinel ' ];
386+ $ params ['service ' ] = $ params ['sentinel_master ' ];
387387 }
388388 $ params += ['parameters ' => []];
389389 $ params ['parameters ' ] += [
@@ -411,7 +411,7 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
411411 }
412412 }
413413
414- if (1 === \count ($ hosts ) && !($ params ['redis_cluster ' ] || $ params ['redis_sentinel ' ])) {
414+ if (1 === \count ($ hosts ) && !($ params ['cluster ' ] || $ params ['sentinel_master ' ])) {
415415 $ hosts = $ hosts [0 ];
416416 } elseif (\in_array ($ params ['failover ' ], ['slaves ' , 'distribute ' ], true ) && !isset ($ params ['replication ' ])) {
417417 $ params ['replication ' ] = true ;
@@ -420,7 +420,7 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
420420 $ params ['exceptions ' ] = false ;
421421
422422 $ redis = new $ class ($ hosts , array_diff_key ($ params , self ::$ defaultConnectionOptions ));
423- if (isset ($ params ['redis_sentinel ' ])) {
423+ if (isset ($ params ['sentinel_master ' ])) {
424424 $ redis ->getConnection ()->setSentinelTimeout ($ params ['timeout ' ]);
425425 }
426426 } elseif (class_exists ($ class , false )) {
0 commit comments