【问题标题】:Redis CLI not showing recently stored key via LaravelRedis CLI 未通过 Laravel 显示最近存储的密钥
【发布时间】:2020-07-13 09:09:50
【问题描述】:

我正在尝试通过这样做在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。我也使用 composer 安装了 predis 包。

我的开发环境是:

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

对此的任何帮助将不胜感激。 TIA

【问题讨论】:

  • 试试这个命令redis-cli -n 1 keys "*"
  • @Maraboc,我认为这是输出(empty list or set)
  • @baig772 如果您看到 (empty list or set) 它是因为您的数据库中没有任何内容,此命令 redis-cli -n 1 keys "*" 表示显示数据库中索引为 1 的所有键。这就是您的情况,该数据库是空

标签: php laravel caching redis in-memory-database


【解决方案1】:

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 键了。

【讨论】:

    【解决方案2】:

    在最新版本的 Laravel (8.^) 中,它在 laravel_database 之前添加了 Redis 键。

    例如:laravel_database_{$YOUR_KEY}。

    为了查看可用的密钥运行:KEYS *

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        我遇到了一个类似的问题,当我通过 Laravel 使用 Redis::keys('*') 查询时,我通过 Laravel 保存的密钥被返回,但是通过 Python 保存的密钥却没有。我仍然不确定为什么(和 here 所述的单独数据库不是原因)。

        有趣的是,我能够看到通过 Python 保存的密钥,使用 Redis::scan('*') (docs)。即使scan 返回了密钥,我仍然无法通过Redis::get('key_name') 得到它。我需要进一步研究为什么会出现这种情况,但这可能有助于找到您丢失的密钥。

        【讨论】:

          猜你喜欢
          • 2020-05-02
          • 1970-01-01
          • 2020-04-19
          • 2017-12-16
          • 2017-09-18
          • 1970-01-01
          • 2013-07-07
          • 1970-01-01
          • 2020-07-15
          相关资源
          最近更新 更多