紧急问题!lumen/laravel缓存文件跑满redis

昨天app突然所有接口都挂掉,一看错误信息,redis跑满了。
我合计也不能啊,我自己写的缓存顶多也就几十m
一看redis,全是laravel自己生成的缓存文件,并且没有过期时间
先清理再说,把这个key删掉,app恢复正常,redis占用变成40m

占用巨大的缓存如下图

紧急问题!lumen/laravel缓存文件跑满redis

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

大概看了下源码,可以通过自定义 storage 的方式来避免因为 tags 导致的这个问题。 在 jwt.php 配置文件中可以指定 provider 文件

// config\jwt.php 

 'storage' => Tymon\JWTAuth\Providers\Storage\Illuminate::class,

自己参照官方的文件,重写 cache 方法,或者将 $this->supportsTags 默认改为 false 是不是就可以解决了。

3年前 评论
讨论数量: 8

除了这个之外,还有一些有效期为7天的缓存文件如下图

file

3年前 评论
李铭昕

用了 tags 功能?我前几天正好去看了这个逻辑。。

确实很容易占内存

3年前 评论
woann (楼主) 3年前
李铭昕 (作者) 3年前
Imuyu 3年前

你可以自定义一个缓存驱动,实现redis,然后去除tags功能,或者增加缓存时间!

3年前 评论

猜测是默认cacha驱动用了redis

3年前 评论
redis-cli -h host --bigkeys 

可以查找大Key的分布

3年前 评论

临时救急办法,定时跑个删除脚本

3年前 评论

大概看了下源码,可以通过自定义 storage 的方式来避免因为 tags 导致的这个问题。 在 jwt.php 配置文件中可以指定 provider 文件

// config\jwt.php 

 'storage' => Tymon\JWTAuth\Providers\Storage\Illuminate::class,

自己参照官方的文件,重写 cache 方法,或者将 $this->supportsTags 默认改为 false 是不是就可以解决了。

3年前 评论

@24K大白羊 重写了Illuminate,并在配置文件里把Storage指向新的Illuminate就好了

3年前 评论
24K大白羊 3年前
24K大白羊 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!