sql >> Databasteknik >  >> NoSQL >> Redis

Varför returnerar Laravel Redis::scan('*') en förväntad nyckel men inte Redis::keys('*')?

Laravel lägger till ett prefix till alla nycklar som skapas. Det prefixet är definierat i redis config i database.php .

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

Jag har inte tittat på källkoden än men troligen när laravel letar efter nycklar förväntar den sig prefixet och lägger till det till det du skickade till keys eller get . Så om du skickade keys('key_name') den kommer att söka efter prefix_key_name det är därför get returnerade null och keys returnerade inte min nyckel skapad via Python i motsats till den som skapades via Laravel. Jag antar att scan fungerar lite annorlunda och returnerar alla nycklar oavsett prefix.

Om du ställer in standardprefixet till null ('prefix' => env('REDIS_PREFIX', null ) så kommer din nyckel att returneras.

Använder get och lägg till prefixet, så här Redis::get('prefix_key_name') fungerar inte.




  1. MongoDB - filstorleken är enorm och växer

  2. Timeout-undantag efter async-kommandon och Task.WhenAny väntar i StackExchange.Redis

  3. Så här tar du emot Redis-publiceringsmeddelande i Go

  4. Kunde inte ansluta till Redis på 127.0.0.1:6379:Anslutning nekades