别再吹Redis缓存秒杀了,昨晚差点把我服务器干崩
来源:本站原创 浏览:273次 时间:2026-10-03
刚眯了两个小时,爬起来必须吐槽一下。
最近群里那帮人天天吹Redis做对象缓存,说QPS能干到十万,我信了他们的邪,前天晚上动手把博客的MySQL查询全搬到Redis上了。
白天跑得好好的,我还美滋滋地发了个朋友圈炫耀。结果昨晚八点,流量一上来,网站直接502。
我以为被CC攻击了,登服务器一看,Nginx的error.log里全是upstream timed out,再看PHP-FPM的状态,进程全卡死。
折腾了半宿才发现,问题出在Redis的/etc/redis/redis.conf第540行附近那个maxmemory-policy。
我之前抄别人的配置,写的是allkeys-lru。这玩意看着挺科学,但老内存一旦爆了,它就开始疯狂淘汰键。

我的缓存里有些是刚存进去的热点数据,也被稀里糊涂地踢掉了。
踢掉就算了,关键我的代码逻辑是“查不到缓存就直接回源查数据库”,结果Redis一边踢,数据库一边查,瞬间把MySQL的连接数顶满,直接引发雪崩。
那帮吹牛的大神,没一个提过这个参数得结合业务改。要是你的键明显是分冷热的,得用volatile-lru,给冷数据设置过期时间,别让它一棵树上吊死。
我半夜改了配置,命令行敲了个redis-cli config set maxmemory-policy volatile-lru,又重启了php-fpm,才算消停。
- 说实话,缓存这玩意不是银弹。
- 光知道set和get,不盯着淘汰策略和内存上限,早晚要交学费。
- 以后谁再跟我吹什么一键搞定高并发,我直接把昨晚的错误日志糊他脸上。
不行了,补觉去,下午还得排查下那个慢查询日志,真是一坑未平一坑又起。
- 上一篇: 昨晚服务器差点被删库,吓得我连夜改配置
- 下一篇: 聊聊我见过的那些伪优化推广骚操作











鄂公网安备42011602001234号