Redis CLI不显示最近通过Laravel存储的密钥

p1tboqfb  于 2023-06-25  发布在  Redis
关注(0)|答案(5)|浏览(123)

我尝试在Laravel中使用redis缓存我的结果,方法是这样做

$result =   Cache::remember('orders_cache', 10, function () use ($orders) {
           return $orders;
        });
        return $result;

当我进入Redis-Cli并执行KEYS *时,我没有看到orders_cache键。我已经在我的.env中将cache_driver设置为redis,我还运行了命令php artisan config:cache。我也安装了predis包使用composer以及。
我的开发环境是:

  • PHP7.4
  • Ubuntu 20
  • Laravel 6.0
  • Redis 5.0.7

任何帮助在这方面将不胜感激。TIA

a14dhokn

a14dhokn1#

Redis示例支持16个逻辑数据库,编号从0到15,默认运行redis-cli连接到数据库0。你可以利用Redis INFO命令来显示包含键的数据库,以及其他信息,如:

db0:keys=1,expires=0,avg_ttl=0
db1:keys=2,expires=2,avg_ttl=2462100

在可能的情况下,我有2个数据库。现在你可以在连接后用select命令改变你正在使用的数据库。例如:

select 1

如果切换成功,则返回OK。现在你可以看到你的Laravel键了。

w51jfk4q

w51jfk4q2#

运行redis-cli monitor并检查数据库号和写入的密钥。

nxagd54h

nxagd54h3#

在最近的Laravel版本(8.^)中,它在laravel_database前添加了Redis密钥。
例如:laravel_database_{$YOUR_KEY}。
要查看哪些键可用,请运行:KEYS *

wz3gfoph

wz3gfoph4#

我遇到了一个类似的问题,当通过Laravel使用Redis::keys('*')查询时,我通过Laravel保存的密钥被返回,但是通过Python保存的密钥没有。我仍然不确定为什么(并且单独的数据库,如所指出的here不是原因)。
有趣的是,我能够看到通过Python使用Redis::scan('*')docs)保存的密钥。即使scan返回了密钥,我仍然无法通过Redis::get('key_name')获得它。我需要做进一步的研究,至于为什么会这样,但这可能是有用的,在寻找您丢失的关键。

oprakyz7

oprakyz75#

我已经使用@m.nikzad answer的帮助解决了这个问题,但我不知道之后该怎么办,所以我设法这样做:
1.监控redis以确定数据、数据库等。
1.连接到数据库编号。
1.检索你想要的钥匙或所有的钥匙,但要小心检索一个巨大的数据库上的所有钥匙!
所以,实际:
1.监测:redis-cli -h <redis_host> monitor,其中<redis_host>是您的redis主机,您将在第二行(IG)中获得类似SELECT n的内容,其中n是数据库编号。
1.现在你知道了数据库的编号,让我们连接到它:redis-cli -h <redis_host> -n <database_number>,其中<redis_host>是您的redis主机,<database_number>是我们在上一步中刚刚获得的数据库编号。如果redis端口与默认端口不同,请确保在命令中包含-p <redis_port>
1.检索:根据需要使用KEYS *KEYS <pattern>GET <key>
资源:

  1. monitor
  2. keys
  3. get

相关问题