在 Laravel 中使用缓存外观时未显示 Redis 键

Posted

技术标签:

【中文标题】在 Laravel 中使用缓存外观时未显示 Redis 键【英文标题】:Redis keys not shown while using Cache facade in Laravel 【发布时间】:2019-10-27 05:27:48 【问题描述】:

我正在使用 Laravel Cache 外观和 CACHE_DRIVER=redis。所有数据都成功保存在Redis中,但是当我使用redis-cli并运行keys*时没有键!

当使用命令flushall in redis-cli 时,它会再次从数据库中加载数据,这意味着密钥已经存储在 Redis 中。

【问题讨论】:

【参考方案1】:

Redis 有 16 个索引为 0 - 15 的数据库。默认数据库索引为 0,因此当您在未指定数据库索引的情况下运行 redis 命令时,您只会针对数据库索引 0 运行命令。但是,从 Laravel 5.7 开始,Laravel 将所有缓存数据存储在数据库索引 1 中。

为了查看缓存数据库中的键,您需要查询数据库1。您可以在命令行中使用-n 开关指定数据库索引,也可以在redis 提示符下使用select 命令更改活动数据库。

redis-cli -n 1 keys "*"

#> redis-cli
127.0.0.1:6379> select 1
127.0.0.1:6379[1]> keys *

【讨论】:

【参考方案2】:

更新

这可能与 database.php 配置文件中 redis 块中的 Laravel 缓存前缀有关。见here

更多详情请参阅this 回答。

以前的答案。

我遇到了同样的问题,我尝试了接受的ans.,但是不同的数据库不是问题。

我能够使用scan 找到丢失的密钥,例如Redis::scan('*')。为什么使用Redis::keys('*') 不返回密钥,仍然是个谜。

(请注意,只有使用 Python 创建的 key:values 不会返回 keys,而使用 Laravel 创建的会返回。)

【讨论】:

以上是关于在 Laravel 中使用缓存外观时未显示 Redis 键的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 中使用 Redis 缓存图像?

composer安装laravel框架时未生成Vendor解决办法

composer安装laravel框架时未生成Vendor解决办法

搜索时未找到 Laravel 数据表列

Apple Watch:从通知中心打开推送时未显示动态 Long Look

奇怪的列表视图项目选择器外观(手指离开屏幕时未移除按下状态)