redis key过期通知在一段时间后无法收到通知

博客讲述了作者在使用Redis key过期通知时遇到的问题,即在一段时间后无法收到通知。经过排查发现是由于`tcp-keepalive`配置为0导致订阅连接关闭,但客户端未显示异常。通过将`tcp-keepalive`设置为官方推荐的60秒解决了此问题,确保了心跳检查机制的有效性。此外,文中还提到了SpringBoot订阅Redis过期通知的代码实现及配置注意事项。
摘要由CSDN通过智能技术生成

redis key过期通知在一段时间后无法收到通知

最近基于redis key过期通知做了一个定时器。用来处理一次性定时任务,面向搜索引擎编程的我,三下五除二就copy就完成了
程序刚启动后没什么问题。可以收到正常收到通知(我好厉害,好牛逼,,好开心,可以下班了)
但是历史总是惊人的相似,往往自以为是的我总是会被打脸,第二天早上发现在这个通知一段时间后就再也收不到通知了。。。。。。。。(万马奔腾)

主题来了

不废话了,首先想到的是,订阅连接是不是关闭了,果不其然,订阅连接就是关闭了。
但是为什么我没有看到客户端出现错误或异常呢?估计第三方库还是做得不够完善。

然后我就去读了一把redis的redis.conf
发现其中有一个配置是这样的
在这里插入图片描述

机智的我,看到这个0 格外的扎眼。就觉得他有问题, 在读了他的说明。发现应该就是他的问题,
然后我就把它改成了官方推荐的 60秒,果不其然。不再会订阅断开的问题了。
将 tcp-keepalive 60 即可解决这个问题
这里需要说明下,如果你是 4.x or 5.x版本的redis 默认值是300秒。 3X版本默认值是0

tcp-keepalive说明

tcp-keepalive 0 此配置的作用是检查健康的连接的时间,可以理解为心跳机制(官方建议值为60秒)
如果设置为0则不会检查心跳信息,就会造成连接实际已经断开了。但是客户端不知道,也不会抛异常。

springboot订阅redis过期通知代码

  • maven依赖
 		<dependency
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值