Redis
 sql >> Base de données >  >> NoSQL >> Redis

Pourquoi Laravel Redis::scan('*') renvoie-t-il une clé attendue mais Redis::keys('*') ne l'est pas ?

Laravel ajoute un préfixe à toutes les clés créées. Ce préfixe est défini dans le redis configuration dans database.php .

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

Je n'ai pas encore regardé le code source mais très probablement lorsque laravel recherche des clés, il attend le préfixe et l'ajoute à ce que vous avez passé à keys ou get . Donc, si vous avez passé keys('key_name') il recherchera prefix_key_name c'est pourquoi get a renvoyé null et keys n'a pas renvoyé ma clé créée via Python par opposition à celle créée via Laravel. Je suppose que scan fonctionne un peu différemment et renvoie toutes les clés quel que soit son préfixe.

Si vous définissez la valeur par défaut de votre préfixe sur null ('prefix' => env('REDIS_PREFIX', null ) alors votre clé vous sera rendue.

Utiliser get et ajoutez le préfixe, comme ceci Redis::get('prefix_key_name') ne fonctionne pas.