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

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

占用巨大的缓存如下图

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案

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

// config\jwt.php 

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

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

3年前 评论
讨论数量: 8

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

// config\jwt.php 

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

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

3年前 评论

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

file

3年前 评论
李铭昕

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

确实很容易占内存

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

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

3年前 评论

猜测是默认cacha驱动用了redis

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

可以查找大Key的分布

3年前 评论

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

3年前 评论

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

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

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