当前位置: 首页 > news >正文

万州论坛网站建设电商网站开发文字教程

万州论坛网站建设,电商网站开发文字教程,长沙优化网站分析,wordpress网易云音乐基于 redisTemplate 在分布式集群环境中的最佳实践,其实无论是单机还是集群,保证原子性都是第一位的,如果能同时保证性能和高可用,那么就是一个可靠的分布式锁解决方案。 主要思路是:设置锁时,使用 redis…

基于 redisTemplate

在分布式集群环境中的最佳实践,其实无论是单机还是集群,保证原子性都是第一位的,如果能同时保证性能和高可用,那么就是一个可靠的分布式锁解决方案。

主要思路是:设置锁时,使用 redisTemplate,因为其底层实际包含了 setnx 、expire 的功能,起到了原子操作的效果.  给 key 设置随机且唯一的值,并且只有在 key 不存在时才设置成功返回 True,并且设置 key 的过期时间(最好是毫秒级别)

完整代码:

定义一个接口 和实现类:

public interface ILock {/*** 获取锁* @param timeout 超时自动解锁* @return 获取到锁返回true 获取失败则返回false*/boolean tryLock(long timeout);/*** 释放锁*/void unlock();
}
public class RedisLock implements ILock {private String name;private StringRedisTemplate stringRedisTemplate;public RedisLock (String name,StringRedisTemplate redisTemplate){this.name = name;this.stringRedisTemplate = redisTemplate;}private static final String KEY_PREFIX = "lock:";private static final String ID_PREFIX = UUID.randomUUID().toString();@Overridepublic boolean tryLock(long timeoutSec) {String threadId = ID_PREFIX + Thread.currentThread().getId();Boolean success = stringRedisTemplate.opsForValue().setIfAbsent(KEY_PREFIX+name,threadId);Boolean successExpire = stringRedisTemplate.expire(KEY_PREFIX+name,timeoutSec, TimeUnit.SECONDS);return success && successExpire;}@Overridepublic void unlock() {//获取线程标识String threadId = ID_PREFIX + Thread.currentThread().getId();//获取锁里面的标识String id = stringRedisTemplate.opsForValue().get(KEY_PREFIX+name);if(threadId.equals(id)){stringRedisTemplate.delete(KEY_PREFIX+name);}}

使用:

@Component
@Slf4j
public class TestStatisticTask {@Autowiredprivate StringRedisTemplate stringRedisTemplate;@Scheduled(cron = "${test.statistic.overview.cron:0 0/5 * * * ?}")public void run(){log.info("定时器统计信息启动...");RedisLock redisLock = new RedisLock("TestStatisticTask",stringRedisTemplate);if(!redisLock.tryLock(5*60)){log.info("定时器统计信息启动 未获取到锁");return;}try{//业务处理逻辑}catch (Exception ex){log.info("######定时器统计信息启动 异常:{}", ex.getMessage());log.error(ex.getMessage(), ex);}finally {redisLock.unlock();}}
}

http://www.yayakq.cn/news/371295/

相关文章:

  • 政务网站建设的三大核心功能是什么河北手机网站制作公司
  • 网站品牌词如何优化怎么把做的网站发到网上去
  • 常州网站制作推广全国代理网
  • 定西市网站建设咨询北京注销网站备案
  • 信阳制作网站ihanshi藁城住房和城乡建设局网站
  • 做微信平台网站需要多少钱做旅游的网站有哪些
  • 软件开发网站开发培训网站开发培训成都
  • 自动采集更新的网站wordpress网站建设遇到问题解决方案
  • 医院网站制作公司去年做啥网站致富
  • 网站设计合同注意事项网站强制qq弹窗代码
  • 网站建设域名是什么意思贵阳专业做网站的公司有哪些
  • 城乡建设部网站第35号令怎么备案网站
  • 惠州建设银行网站网站后台 网站页面没有显示
  • 翻译网站素材深圳龙华建设局官方网站
  • 单纯的文章网站怎么做带前台的WordPress模板
  • 池州哪里做网站商会网站模板
  • 想要提高网站排名应该怎么做梅州网站制作
  • 网站建设公司美工如何找软件工程四大方向
  • 比较好的中文wordpress主题网站标题优化排名
  • 京东网站的设计风格wordpress 批量导入用户名
  • 枣阳网站开发浙江网站设计 site
  • 网站被挂了黑链找小程序
  • 网站内页做排名wordpress导出
  • 网站设计要多少钱做盗版系统网站会不会
  • 哪些网站做农产品电子商务物流百度应用市场
  • 网站开发和合同南昌网站建设基本流程
  • 网站建站公司服务好吗免费saascrm
  • 那些网站是asp做的幼教机构网站开发设计论文
  • 做门户网站用什么模板好西安网页开发
  • 网站建设与管理拼音网页制作ppt模板