@@ -44,8 +44,8 @@ trait RedisTrait
44
44
'retry_interval ' => 0 ,
45
45
'tcp_keepalive ' => 0 ,
46
46
'lazy ' => null ,
47
- 'redis_cluster ' => false ,
48
- 'redis_sentinel ' => null ,
47
+ 'cluster ' => false ,
48
+ 'sentinel ' => null ,
49
49
'dbindex ' => 0 ,
50
50
'failover ' => 'none ' ,
51
51
'ssl ' => null , // see https://php.net/context.ssl
@@ -87,13 +87,13 @@ private function init(\Redis|Relay|\RedisArray|\RedisCluster|\Predis\ClientInter
87
87
*/
88
88
public static function createConnection (#[\SensitiveParameter] string $ dsn , array $ options = []): \Redis |\RedisArray |\RedisCluster |\Predis \ClientInterface |Relay
89
89
{
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
+ };
97
97
98
98
if (!\extension_loaded ('redis ' ) && !class_exists (\Predis \Client::class)) {
99
99
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
121
121
122
122
$ query = $ hosts = [];
123
123
124
- $ tls = 'rediss ' === $ scheme ;
124
+ $ tls = 'rediss ' === $ scheme || ' valkeys ' === $ scheme ;
125
125
$ tcpScheme = $ tls ? 'tls ' : 'tcp ' ;
126
126
127
127
if (isset ($ params ['query ' ])) {
@@ -174,28 +174,24 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
174
174
175
175
$ params += $ query + $ options + self ::$ defaultConnectionOptions ;
176
176
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 ;
182
178
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)) {
184
180
throw new CacheException ('Redis Sentinel support requires one of: "predis/predis", "ext-redis >= 5.2", "ext-relay". ' );
185
181
}
186
182
187
183
if (isset ($ params ['lazy ' ])) {
188
184
$ params ['lazy ' ] = filter_var ($ params ['lazy ' ], \FILTER_VALIDATE_BOOLEAN );
189
185
}
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 );
191
187
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. ' );
194
190
}
195
191
196
192
$ 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 ) {
199
195
\extension_loaded ('redis ' ) => \Redis::class,
200
196
\extension_loaded ('relay ' ) => Relay::class,
201
197
default => \Predis \Client::class,
@@ -206,7 +202,7 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
206
202
default => \Predis \Client::class,
207
203
};
208
204
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)) {
210
206
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 ));
211
207
}
212
208
@@ -230,7 +226,7 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
230
226
$ host = 'tls:// ' .$ host ;
231
227
}
232
228
233
- if (!isset ($ params ['redis_sentinel ' ])) {
229
+ if (!isset ($ params ['sentinel ' ])) {
234
230
break ;
235
231
}
236
232
@@ -256,15 +252,15 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
256
252
$ sentinel = @new $ sentinelClass ($ host , $ port , $ params ['timeout ' ], (string ) $ params ['persistent_id ' ], $ params ['retry_interval ' ], $ params ['read_timeout ' ], ...$ extra );
257
253
}
258
254
259
- if ($ address = @$ sentinel ->getMasterAddrByName ($ params ['redis_sentinel ' ])) {
255
+ if ($ address = @$ sentinel ->getMasterAddrByName ($ params ['sentinel ' ])) {
260
256
[$ host , $ port ] = $ address ;
261
257
}
262
258
} catch (\RedisException |\Relay \Exception $ redisException ) {
263
259
}
264
260
} while (++$ hostIndex < \count ($ hosts ) && !$ address );
265
261
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 );
268
264
}
269
265
270
266
try {
@@ -379,11 +375,11 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
379
375
380
376
$ redis = $ params ['lazy ' ] ? RedisClusterProxy::createLazyProxy ($ initializer ) : $ initializer ();
381
377
} elseif (is_a ($ class , \Predis \ClientInterface::class, true )) {
382
- if ($ params ['redis_cluster ' ]) {
378
+ if ($ params ['cluster ' ]) {
383
379
$ params ['cluster ' ] = 'redis ' ;
384
- } elseif (isset ($ params ['redis_sentinel ' ])) {
380
+ } elseif (isset ($ params ['sentinel ' ])) {
385
381
$ params ['replication ' ] = 'sentinel ' ;
386
- $ params ['service ' ] = $ params ['redis_sentinel ' ];
382
+ $ params ['service ' ] = $ params ['sentinel ' ];
387
383
}
388
384
$ params += ['parameters ' => []];
389
385
$ params ['parameters ' ] += [
@@ -411,7 +407,7 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
411
407
}
412
408
}
413
409
414
- if (1 === \count ($ hosts ) && !($ params ['redis_cluster ' ] || $ params ['redis_sentinel ' ])) {
410
+ if (1 === \count ($ hosts ) && !($ params ['cluster ' ] || $ params ['sentinel ' ])) {
415
411
$ hosts = $ hosts [0 ];
416
412
} elseif (\in_array ($ params ['failover ' ], ['slaves ' , 'distribute ' ], true ) && !isset ($ params ['replication ' ])) {
417
413
$ params ['replication ' ] = true ;
@@ -420,7 +416,7 @@ public static function createConnection(#[\SensitiveParameter] string $dsn, arra
420
416
$ params ['exceptions ' ] = false ;
421
417
422
418
$ redis = new $ class ($ hosts , array_diff_key ($ params , self ::$ defaultConnectionOptions ));
423
- if (isset ($ params ['redis_sentinel ' ])) {
419
+ if (isset ($ params ['sentinel ' ])) {
424
420
$ redis ->getConnection ()->setSentinelTimeout ($ params ['timeout ' ]);
425
421
}
426
422
} elseif (class_exists ($ class , false )) {
0 commit comments