Laravel+Redis可以检索键列表,但不能检索单个键值

iyfjxgzm  于 2023-05-19  发布在  Redis
关注(0)|答案(1)|浏览(146)

我的Redis数据库里有几个计数器
我可以从一个控制台命令设置,我也可以能够列出键

$key_names = Redis::keys("*api_count*");

在同一个控制台命令中,转储$key_names得到了这个

array:5 [
  0 => "dev_database_api_count_companies_2023_05_16"
  1 => "dev_database_api_count_check_last_event2023_05_16"
  2 => "dev_database_api_count_financial_2023_05_16"
  3 => "dev_database_api_count_check_last_event_2023_05_16"
  4 => "dev_database_api_count_authenticate_2023_05_16"
]

然后,我尝试在同一个控制台命令中读取一个值

$value = Redis::get('dev_database_api_count_companies_2023_05_16');

但我得到了一个空值
所以我尝试usign redis-cli

127.0.0.1:6379> KEYS *
1) "dev_database_api_count_companies_2023_05_16"
2) "dev_database_api_count_check_last_event2023_05_16"
3) "dev_database_api_count_financial_2023_05_16"
4) "dev_database_api_count_check_last_event_2023_05_16"
5) "dev_database_api_count_authenticate_2023_05_16"
6) "dev_database_queues:default"
7) "dev_database_queues:default:notify"

127.0.0.1:6379> GET "dev_database_api_count_companies_2023_05_16"
"204"

我做错了什么?
为什么setkeys可以工作,但get不行?

背景

我只使用Redis作为缓存我使用Laravel 8为这个特定的项目,但同样的行为,它在最新的Laravel 10

已解决

请看我自己的答案。这个问题只是一个前缀的问题。我忽略了keys不删除前缀,但当使用get时,我必须省略前缀

ohtdti5x

ohtdti5x1#

我现在明白了,keys并没有删除laravel添加的前缀。
因此,当使用get进行检索时,我必须手动删除前缀。

Redis::get(
  str_replace (config("database.redis.options.prefix"), "", $key_name)
);

我不能用

$value = Redis::get('dev_database_api_count_companies_2023_05_16');

但是

$value = Redis::get('api_count_companies_2023_05_16');

相关问题