Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Por que o Laravel Redis::scan('*') está retornando uma chave esperada, mas o Redis::keys('*') não está?


O Laravel adiciona um prefixo a todas as chaves criadas. Esse prefixo é definido no redis config em database.php .

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

Eu ainda não olhei para o código-fonte, mas provavelmente quando o laravel procura por chaves, ele espera o prefixo e anexa isso ao que você passou para keys ou get . Então, se você passou keys('key_name') ele procurará por prefix_key_name é por isso que get retornou null e keys não retornou minha chave criada via Python ao contrário da criada via Laravel. Acho que scan funciona um pouco diferente e retorna todas as chaves independentemente do seu prefixo.

Se você definir o padrão do seu prefixo como nulo ('prefix' => env('REDIS_PREFIX', null ) então sua chave será devolvida.

Usando get e anexe o prefixo, como este Redis::get('prefix_key_name') não funciona.