请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Redisson设置key的过期时间异常

用Redisson设置key的过期时间是大于1天的,但是用TTL查看key的过期时间异常。具体如下图:
目测像是在从30 倒数到20之后又变成30,一直这样循环。请问老师有遇到过这种情况吗?

https://img1.sycdn.imooc.com//szimg/5ffed7620926366505220564.jpg

正在回答 回答被采纳积分+3

1回答

InCowboy 2021-01-13 20:07:39

这是Redisson的一个Watchdog的设计,就是延迟锁的有效期,它为什么要这么呢?原因就在于使用Redis做分布式锁的时候过期时间不太好把握,比如设置了1000,当A程序执行到一半可能这个锁就失效了,那么其他程序比如B它有可能就会获取到这把锁,从而导致安全问题,因此Redisson为了解决这个问题就设置的watchdog,自动延长锁的过期时间,直到你程序释放锁为止,这个自动续命的时间默认是30s

0 回复 有任何疑惑可以回复我~
  • 提问者 慕仔8930017 #1
    从现在的表现来看,我设置的过期时间是大于一天的。她的TTL在循环倒数几次以后key就没了……
    回复 有任何疑惑可以回复我~ 2021-01-13 20:13:51
  • InCowboy 回复 提问者 慕仔8930017 #2
    你把代码贴一下,我看看
    回复 有任何疑惑可以回复我~ 2021-01-13 20:27:30
  • 提问者 慕仔8930017 回复 InCowboy #3
    谢谢老师解答,我就用的是课程中的代码。
     boolean isLocked = lock.tryLock(expireTime, TimeUnit.MILLISECONDS);
    我感觉这样写好像并不是在上锁且设置过期时间.而是在等待时间内去获取锁
    回复 有任何疑惑可以回复我~ 2021-01-13 20:56:48
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信