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

问题描述 投票:0回答:6

我正在尝试通过这样做在

redis
中使用
Laravel
缓存我的结果

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

当我进入 Redis-Cli 并执行

KEYS *
操作时,我没有看到
orders_cache
键。我已将
cache_driver
中的
redis
设置为
.env
,并且还运行了命令
php artisan config:cache
。我还使用 Composer 安装了 predis 包。

我的开发环境是:

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

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

php laravel caching redis in-memory-database
6个回答
18
投票

Redis 实例支持 16 个逻辑数据库,编号从 0 到 15,默认通过 runnig

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 密钥了。


7
投票

运行

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


6
投票

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

例如:laravel_database_{$YOUR_KEY}。

要查看哪些键可用,请运行:

KEYS *


0
投票

我遇到了类似的问题,当通过 Laravel 使用

Redis::keys('*')
查询时,通过 Laravel 保存的密钥被返回,但是通过 Python 保存的密钥却没有返回。我仍然不确定为什么(并且here指出的单独数据库不是原因)。

有趣的是,我能够使用

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


0
投票

我已经使用@m.nikzad答案的帮助解决了这个问题,但我不知道之后该怎么做,所以我设法这样做:

  1. 监控redis以确定数据、数据库等..
  2. 连接数据库号码。
  3. 检索您想要的密钥或所有密钥,但要小心检索庞大数据库上的所有密钥!

所以,实用:

  1. 监控:
    redis-cli -h <redis_host> monitor
    ,其中
    <redis_host>
    是您的redis主机,您将在第二行(ig)中看到类似
    SELECT n
    的内容,其中
    n
    是数据库编号。
  2. 现在您知道了数据库编号,让我们连接到它:
    redis-cli -h <redis_host> -n <database_number>
    ,其中
    <redis_host>
    是您的redis主机,
    <database_number>
    是我们在上一步中刚刚获得的数据库编号。如果 redis 端口与默认端口不同,请确保在命令中包含
    -p <redis_port>
  3. 检索:根据您的需要使用
    KEYS *
    KEYS <pattern>
    GET <key>

资源:

  1. 监控
  2. 按键
  3. 得到

0
投票

我遇到了同样的问题,我在这里找到了解决方案。

  1. 我制作了一条针对此功能的路线

    公共函数index() { 缓存::put('联系人', '03238201322'); $users = Cache::remember('active_users', 60, function () { return User::where('status', 1)->get(); }); dd($用户); }

  2. 其次,我在

    redis-cli
    终端命令中运行此命令:
    monitor

  3. 然后我点击了针对此功能的路线。

  4. 所有活动都显示在我的终端中,选择

    database
    来存储数据,
    vairables
    名称用作键,然后我注意到
    redis
    选择
    database 1
    来存储变量,并且它始终使用
    laravel_database_
    作为每个变量的前缀,就像我的键名是
    name
    那么它存储
    laravel_database_name

  5. 然后我在

    redis-cli
    命令中运行命令:
    SELECT 1
    。为我选择数据库 1。

  6. 然后我运行命令:

    KEYS *
    然后它显示我通过 laravel 缓存存储的所有变量。

© www.soinside.com 2019 - 2024. All rights reserved.