redis过期时间失效引发的血案

场景:

一些案件分配给一些用户,利用redis的list对用户进行排队,以保证均匀性:

当一个案件来到时,pop出一个用户,将该案件分配给这个用户。然后再把这个用户put回队尾。

redis的key如:abc:18  其中18代表这个key进行加载的日志。key的有效期设置为两天。

当有案件推送到时候到这个redis key中进行查找list列表,如果list列表为空的话进行首次加载,key里的日期设置为当前日期。

症状:

数据库中已经没有了的用户出现在了这个list中

非常让人费解,每天的key都不是同一个,不可能是因为过期时间的问题啊

最终解决:

如果list中只有一个用户,或者是当并发处理的线程比较多的时候。这个list被pop空了,然后再被put回去的时候没有重新进行设置过期时间,导致key的过期时间成为了永久。到下个月18号的时候这个key中还有数据就不会从数据库中加载了。所以18的时候list里的用户列表还是上个月的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值