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

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

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

阅读 1.9k
1 个回答

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题