ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2022-05-19 10:04:22  阅读:194  来源: 互联网

标签:加锁 -- redis 服务器 定时 分布式 redisTemplate 客户端


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");
}

问题分析:

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

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

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

 

  

标签:加锁,--,redis,服务器,定时,分布式,redisTemplate,客户端
来源: https://www.cnblogs.com/nextgg/p/16287397.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有