定时任务中数据库锁的使用

单机定时任务很好解决,可以使用引入quartz解决。对于多机分布式定时任务系统可以使用TBSchedule、elastic-job等框架解决。

本文要介绍的是在机器少任务少的情况下的解决方案。比如一个后台项目,只分配了两台服务器。不可能使用其中一台专门做定时任务服务器。

如何解决两机任务分配?

思路:在更新事务内,执行select操作谁先获得数据库锁谁先执行,执行完后把信号放到redis.

if(!redisUtil.exist(key)){
   Test test =dao.select(“select * from t_test where id=1”);
     if(!redisUtil.exist(key)){
        //do something ...
    redisUtil.set(key, 1, time);
    }  
}      

猜你喜欢

转载自www.cnblogs.com/nullAndValue/p/9350463.html