Redis
 sql >> Database >  >> NoSQL >> Redis

Perché Laravel Redis::scan('*') restituisce una chiave prevista ma Redis::keys('*') non lo è?

Laravel aggiunge un prefisso a tutte le chiavi create. Quel prefisso è definito in redis config in database.php .

'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),

Non ho ancora esaminato il codice sorgente, ma molto probabilmente quando laravel cerca le chiavi si aspetta il prefisso e lo aggiunge a ciò che hai passato a keys o get . Quindi, se hai passato keys('key_name') cercherà prefix_key_name ecco perché get restituito null e keys non ha restituito la mia chiave creata tramite Python rispetto a quella creata tramite Laravel. Immagino scan funziona in modo leggermente diverso e restituisce tutte le chiavi indipendentemente dal prefisso.

Se imposti il ​​valore predefinito del tuo prefisso su null ('prefix' => env('REDIS_PREFIX', null ) quindi la tua chiave verrà restituita.

Usando get e aggiungi il prefisso, come questo Redis::get('prefix_key_name') non funziona.