Springboot 应用关闭清理 Redis 的 key

查看 170|回复 11
作者:nitouge   
目前是 toB 项目,有些文件生产耗时比较久,生成的时候设置了锁,使用了 Redis,如果在生成阶段,应用停止,这些 key 会导致没有删除。目前有两种想法,1.需要应用关闭清理的 key ,在设置的使用同时也设置到一个统一的 Redis Set 中,在最后应用关闭的时候使用实现 DisposableBean 的 destroy 删除这些 key;2.可能就是把所有的前缀放到集合,通过 SCAN 方法,获取到也是 DisposableBean 的 destroy ;清理都是通过钩子函数去做 @PreDestroy 或者使用 ApplicationListener这些都可以。大家一般怎么做的。
统一回复下,时间是设置了的,可能有这种情况,有的 key 的时间较长,应用重新上新,关闭的时候 key 没有删除,重启后,再次访问可能 key 存在,导致无法操作
KongLiu   
统一回复下,时间是设置了的,可能有这种情况,有的 key 的时间较长,应用重新上新,关闭的时候 key 没有删除,重启后,再次访问可能 key 存在,导致无法操作
kingbill   
我们 redis 都是要设置过期时间的,让他自然过期
635925926   
Lifecycle 接口?
lsk569937453   
设置过期时间
BBCCBB   
设置锁的时候加一个过期时间啊。看你的描述是用的 java ,我记得有封装好的方法在 getlock 的时候默认加超时时间,还有看门狗机制。
Goooooos   
看 redisson lock
BBCCBB   
心跳机制,key 设置 N 秒过期。
应用[1,N)秒定时刷新 key 的有效期。
billbur   
只设置过期时间也不行, 还要续约.
Plutooo   
设置过期时间,java 的话有很多,有个叫 redisson 的可以直接用,不用自己实现锁
您需要登录后才可以回帖 登录 | 立即注册

返回顶部