微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

定时任务部署多少台服务器,怎么确保只有一台服务器执行--redis 分布式锁

1. 一种对于多台服务器处理定时任务的方法 redis

2.集群模式下的定时任务与Redis分布式锁

redis 分布式锁注意事项

  •   1.互斥性:在任意时刻,只有一个客户端持有锁
  •   2.一致性:加锁和解锁必须在同一个客户端,而且客户端自己不能把别人的锁解了;
  •   3.避免死锁:即使有一个客户端在持有锁期间崩溃了而没有主动解锁,也能保证后续其他客户端能加锁

 

参考代码实现

if(redistemplate.opsForValue().setIfAbsent("getsnInfo","11")){ //key的值放什么不重要,重要的是key.所以11或者aa都行。多个定时任务,是多个key,不能set一样的,各管各的定时任务。懂redis的应该都明白
try{

// 业务代码

  }catch(){ 
  redistemplate.delete("getsnInfo"); 
  }
  redistemplate.delete("getsnInfo");
}

问题分析:

  上述代码满足分布式锁的互斥性;

  没有避免死锁,假如加锁的客户端挂掉,锁将一直存在,需要给加的锁添加过期时间;

  如果保证一致性呢,删除的时候 判断 取出来的值 是否 放进去的值;

 

  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐