sql >> Base de Datos >  >> NoSQL >> Redis

¿Por qué Laravel Redis::scan('*') devuelve una clave esperada pero Redis::keys('*') no?

Laravel agrega un prefijo a todas las claves creadas. Ese prefijo se define en el redis configuración en database.php .

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

Todavía no he mirado el código fuente, pero lo más probable es que cuando laravel busque claves, espere el prefijo y lo agregue a lo que pasó a keys o get . Entonces, si pasó keys('key_name') buscará prefix_key_name por eso get devolvió null y keys no devolvió mi clave creada a través de Python a diferencia de la creada a través de Laravel. Supongo que scan funciona un poco diferente y devuelve todas las claves independientemente de su prefijo.

Si establece el valor predeterminado de su prefijo en nulo ('prefix' => env('REDIS_PREFIX', null ) entonces se le devolverá su clave.

Usando get y agregue el prefijo, así Redis::get('prefix_key_name') no funciona.