【线上错误排查】Redis key过期推送延迟

线上服务用的是阿里云的redis,业务是根据计算出来的时间,到点进行推送,例如 3点进行推送、5点进行推送,
但是在线上数据量过多的时候,经过各方log记录和数据库时间的记录发现,redis在数据量大的时候发生了key过期延迟推送的状况,延迟时间发生了1分钟 、 5分钟 、10分钟 这样的间隔,但是会有几条数据到点就准时收到了通知,后续的就开始慢慢延迟,笔者在线下写了demo进行验证,发现无法重现,大批量的key过期,demo也可以很快收到通知,不知道是不是redis的配置问题,所以最后换了一种方式实现。

阿里云redis过期策略采用的是默认的 定时清理 和 get时判断是否过期策略,因为最终没查出原因,这里做个记录,方便日后深入研究原理。

最终解决的方案是:

笔者的业务数据有一个共性,就是大批量的数据都是在3点 5点这种时间段进行推送的,所以这里就不保存单条数据,而是保存业务数据共有的分类ID,并加上过期时间,这样到点时,收到key过期通知时,通过这个分类ID,把这些业务数据都查出来,然后for循环推送到用户的微信上。

发布了38 篇原创文章 · 获赞 17 · 访问量 9009

猜你喜欢

转载自blog.csdn.net/cainiao1412/article/details/101435604
今日推荐