Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Warum gibt Laravel Redis::scan('*') einen erwarteten Schlüssel zurück, Redis::keys('*') jedoch nicht?

Laravel fügt allen erstellten Schlüsseln ein Präfix hinzu. Dieses Präfix ist in redis definiert config in database.php .

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

Ich habe mir den Quellcode noch nicht angesehen, aber wenn Laravel nach Schlüsseln sucht, erwartet es höchstwahrscheinlich das Präfix und hängt es an das an, was Sie an keys übergeben haben oder get . Wenn Sie also keys('key_name') übergeben haben es wird nach prefix_key_name gesucht weshalb get gab null zurück und keys hat meinen über Python erstellten Schlüssel nicht zurückgegeben, im Gegensatz zu dem über Laravel erstellten. Ich schätze scan funktioniert etwas anders und gibt alle Schlüssel unabhängig von ihrem Präfix zurück.

Wenn Sie den Standard Ihres Präfixes auf null setzen ('prefix' => env('REDIS_PREFIX', null ), dann wird Ihr Schlüssel zurückgegeben.

Mit get und hängen Sie das Präfix wie folgt an:Redis::get('prefix_key_name') funktioniert nicht.