试图在 laravel 中获取 Redis 键的值

Trying to get the value of a Redis key in laravel

我在 laravel 中使用 Redis 作为缓存。

在我的代码库中,我有一段代码设置了这样的缓存值:

$key = 'track:' . $user->id ...; // this value comes out as 'track:2697:08169'
Cache::put($key, $value, $expiry);

所以此时,key是'track:2697:08169',value是10,我要是运行Cache::get('track:2697:08169')自然就出10了。

出于我不会深入的原因,我一直在尝试深入研究内部结构,但我试图在我的缓存中找到所有键,Redis::connection('cache')->keys('*');,这个特定的键出现在列表为 myapi_database_myapi_cache:track:2697:08169。做了一些研究发现 Cache facade 在这些场景中使用了前缀,这对我来说很有意义。

所以很自然地,如果这是 Redis 的关键,那么我应该能够做到这一点:Redis::connection('cache')->get('myapi_database_myapi_cache:track:2697:08169');

但这并没有给我任何东西。它只是空白。

为什么我可以通过 Cache:: facade 访问值,而不是通过 Redis 直接使用前缀键访问值?如何访问此键的值?另外,有什么方法可以访问此密钥的到期时间吗?

我经过一番摸索找到了答案。我在问题中遗漏了一些重要信息,我认为它不相关,对此深表歉意。

我说过我的密钥 Cache::get('track:2697:08169') 变成了 'myapi_cache:track:2697:08169',但事实并非如此——它变成了 'myapi_database_myapi_cache:track:2697:08169',这就是我的问题的根源:

我做Redis::connection('cache')->get('myapi_database_myapi_cache:track:2697:08169');的时候不行,我做Redis::connection('cache')->get('track:2697:08169');的时候也不行,但我玩了一下发现Redis::connection('cache')->get('myapi_cache:track:2697:08169');其实确实有效!

一旦我通过删除前缀的那部分而不是 myapi_cache 前缀来更改密钥,这也有效:$ttl = Redis::connection('cache')->ttl($rediskey);