高并发下 redis的缓存设置超时时间会不生效?

如题,我现在有一个功能:第三放调用接口上传数据的时候,校验他一小时内 上传了多少数据。
所以 我设置了超时时间 1小时。现象是 有些公司redis的超时时间不生效,有些生效了


他们会频繁调用,现在我去redis上看,是永久的。这个代码有什么问题嘛,该怎么改??


回答:

问题产生原因:高并发情况下,当获取到cacheObject不为空,在执行incr命令前key过期了,则会导致incr时初始化这个key的值为0,且这个key是永久的。

解决:直接使用incr指令,如果该指令返回1,说明key此前已过期,刚被incr指令初始化,设置该key的过期时间。如果返回大于1,说明key已经存在,无需做其他操作。

以上是 高并发下 redis的缓存设置超时时间会不生效? 的全部内容, 来源链接: utcz.com/p/945185.html

回到顶部