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

时间:2019-06-12 16:22:46

标签: php laravel redis

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

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

2 个答案:

答案 0 :(得分:2)

更新

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

有关其他详细信息,请参阅 this 答案。

以前的回答。

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

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

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

答案 1 :(得分:0)

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 *