2024-04-20 01:52:36 发布
网友
我使用Python代码向redis添加了一个值,当我尝试查询时使用的是Laravel
Redis::get('key_name')
null
Redis::keys('*')
Redis::scan('*')
0
为什么keys('*')不返回键,而scan('*')返回键,如果get('key_name')返回null,如何获取值
keys('*')
scan('*')
get('key_name')
7.30.4
3.8.3
6.0
Laravel为创建的所有关键帧添加前缀。该前缀在database.php中的redis配置中定义
database.php
redis
'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
我还没有看过源代码,但很可能在laravel查找键时,它需要前缀,并将其附加到传递给keys或get的内容中。因此,如果您传递了keys('key_name'),它将搜索prefix_key_name,这就是为什么get返回了null,而keys没有返回通过Python创建的密钥,而不是通过Laravel创建的密钥。我猜scan的工作方式有点不同,它返回所有键,而不管其前缀是什么
keys
get
keys('key_name')
prefix_key_name
scan
如果将前缀的默认值设置为null('prefix' => env('REDIS_PREFIX', null),则将返回密钥
'prefix' => env('REDIS_PREFIX', null
像这样使用get并附加前缀Redis::get('prefix_key_name')是行不通的
Redis::get('prefix_key_name')
Laravel为创建的所有关键帧添加前缀。该前缀在
database.php
中的redis
配置中定义'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
我还没有看过源代码,但很可能在laravel查找键时,它需要前缀,并将其附加到传递给
keys
或get
的内容中。因此,如果您传递了keys('key_name')
,它将搜索prefix_key_name
,这就是为什么get
返回了null
,而keys
没有返回通过Python创建的密钥,而不是通过Laravel创建的密钥。我猜scan
的工作方式有点不同,它返回所有键,而不管其前缀是什么如果将前缀的默认值设置为null(
'prefix' => env('REDIS_PREFIX', null
),则将返回密钥像这样使用
get
并附加前缀Redis::get('prefix_key_name')
是行不通的相关问题 更多 >
编程相关推荐