sql >> Databáze >  >> NoSQL >> Redis

Proč Laravel Redis::scan('*') vrací očekávaný klíč, ale Redis::keys('*') ne?

Laravel přidává předponu všem vytvořeným klíčům. Tato předpona je definována v redis config v database.php .

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

Ještě jsem se nedíval na zdrojový kód, ale s největší pravděpodobností, když laravel hledá klíče, očekává předponu a připojí ji k tomu, co jste předali keys nebo get . Pokud jste tedy předali keys('key_name') vyhledá prefix_key_name což je důvod, proč get vrátil null a keys nevrátil můj klíč vytvořený pomocí Pythonu na rozdíl od klíče vytvořeného přes Laravel. Myslím, že scan funguje trochu jinak a vrací všechny klíče bez ohledu na jejich předponu.

Pokud nastavíte výchozí předponu na hodnotu null ('prefix' => env('REDIS_PREFIX', null ), pak bude váš klíč vrácen.

Pomocí get a připojte předponu, jako je tato Redis::get('prefix_key_name') nefunguje.




  1. Node.js Redis Connection Pooling

  2. Nejlepší postup MongoDB pro odkazování

  3. Mongoose findOneAndUpdate Upsert _id null?

  4. MongoDB agregovaný součet každého klíče na dílčím dokumentu