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

揭阳做网站建设公司dede网站迁移

揭阳做网站建设公司,dede网站迁移,网站建设 大纲,公司企业策划书模板一、分布式锁-redission功能介绍 基于setnx实现的分布式锁存在下面的问题#xff1a; 重入问题#xff1a;重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中#xff0c;可重入锁的意义在于防止死锁#xff0c;比如HashTable这样的代码中#xff0c;他的方法都…一、分布式锁-redission功能介绍 基于setnx实现的分布式锁存在下面的问题 重入问题重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中可重入锁的意义在于防止死锁比如HashTable这样的代码中他的方法都是使用synchronized修饰的假如他在一个方法内调用另一个方法那么此时如果是不可重入的不就死锁了吗所以可重入锁他的主要意义是防止死锁我们的synchronized和Lock锁都是可重入的。 不可重试是指目前的分布式只能尝试一次我们认为合理的情况是当线程在获得锁失败后他应该能再次尝试获得锁。 超时释放我们在加锁时增加了过期时间这样的我们可以防止死锁但是如果卡顿的时间超长虽然我们采用了lua表达式防止删锁的时候误删别人的锁但是毕竟没有锁住有安全隐患 主从一致性 如果Redis提供了主从集群当我们向集群写数据时主机需要异步的将数据同步给从机而万一在同步过去之前主机宕机了就会出现死锁问题。 那么什么是Redission呢 Redisson是一个在Redis的基础上实现的Java驻内存数据网格In-Memory Data Grid。它不仅提供了一系列的分布式的Java常用对象还提供了许多分布式服务其中就包含了各种分布式锁的实现。 Redission提供了分布式锁的多种多样的功能 官网地址Redisson: Easy Redis Java client with features of In-Memory Data Grid GitHub地址 https://github.com/redisson/redisson 二、分布式锁-Redission快速入门 引入依赖 dependencygroupIdorg.redisson/groupIdartifactIdredisson/artifactIdversion3.13.6/version /dependency 配置Redisson客户端 Configuration public class RedissonConfig {Beanpublic RedissonClient redissonClient(){// 配置Config config new Config();config.useSingleServer().setAddress(redis://192.168.150.101:6379).setPassword(123321);// 创建RedissonClient对象return Redisson.create(config);} }如何使用Redission的分布式锁 Resource private RedissionClient redissonClient;Test void testRedisson() throws Exception{//获取锁(可重入)指定锁的名称RLock lock redissonClient.getLock(anyLock);//尝试获取锁参数分别是获取锁的最大等待时间(期间会重试)锁自动释放时间时间单位boolean isLock lock.tryLock(1,10,TimeUnit.SECONDS);//判断获取锁成功if(isLock){try{System.out.println(执行业务); }finally{//释放锁lock.unlock();}}} 在 VoucherOrderServiceImpl 注入RedissonClient Resource private RedissonClient redissonClient;Override public Result seckillVoucher(Long voucherId) {// 1.查询优惠券SeckillVoucher voucher seckillVoucherService.getById(voucherId);// 2.判断秒杀是否开始if (voucher.getBeginTime().isAfter(LocalDateTime.now())) {// 尚未开始return Result.fail(秒杀尚未开始);}// 3.判断秒杀是否已经结束if (voucher.getEndTime().isBefore(LocalDateTime.now())) {// 尚未开始return Result.fail(秒杀已经结束);}// 4.判断库存是否充足if (voucher.getStock() 1) {// 库存不足return Result.fail(库存不足);}Long userId UserHolder.getUser().getId();//创建锁对象 这个代码不用了因为我们现在要使用分布式锁//SimpleRedisLock lock new SimpleRedisLock(order: userId, stringRedisTemplate);RLock lock redissonClient.getLock(lock:order: userId);//获取锁对象boolean isLock lock.tryLock();//加锁失败if (!isLock) {return Result.fail(不允许重复下单);}try {//获取代理对象(事务)IVoucherOrderService proxy (IVoucherOrderService) AopContext.currentProxy();return proxy.createVoucherOrder(voucherId);} finally {//释放锁lock.unlock();}} 三、总结 Redisson分布式锁快速入门步骤1 引入依赖在pom.xml中添加Redisson的依赖。添加配置创建一个Config对象并调用其各种方法来配置Redisson。获取Redisson对象使用Redisson的create方法来获取Redisson对象。创建分布式锁使用Redisson对象调用其lock方法来创建分布式锁。解锁使用Redisson对象调用其unlock方法来解锁。
http://www.hkea.cn/news/14565133/

相关文章:

  • 知识产权教育网站建设方案裤子seo关键词
  • 北京门户网站建设江苏华东建设基础工程有限公司网站
  • 网站建设汇编资料网站黄金比例
  • 上海哪家做网站上海装修网站建设
  • 安平百度做网站手机静态网站开发制作
  • 网站开发团队需要几个人wordpress标题去掉私密
  • 备案需要网站空间wordpress拖拽插件
  • 重庆网站制作多少钱网页设计尺寸要缩进多少
  • 永登县建设局网站WordPress云虚拟空间
  • 房地产交易网站旅游圈wordpress主题
  • 购买网站做友情链接昌平区做网站
  • 广源建设集团有限公司网站黄骅信誉楼罗茂莲事件
  • 网站建站时间查询网站建设规划方案模板
  • 宁波网站推广有哪些企业网站合同
  • 工厂网站开发页面设计的重要性
  • 郴州买房网站推广方式单一的原因
  • 网站栏目模版确定网站推广目标
  • 资深的网站推广浙江省院士专家工作站建设网站
  • 深圳最好的营销网站建设公司免费的黄冈网站有哪些下载软件
  • 债权债务交易网站开发营销型网站有哪些类
  • 综合门户型网站有哪些万能短视频素材库免费
  • 建站平台选择建议有哪些做兼职的设计网站有哪些工作内容
  • 中国建筑总公司网站wordpress仿朋友圈
  • 网站建设公司-好发信息网高端网站建设 n磐石网络
  • 网站建设毅文科技学生个人网页制作成品代码
  • 网站建设有创意企业内部网站建设网站
  • 网上哪些网站可以做兼职网站建设服务费入什么科目
  • 网站开发实训步骤国产一级a做爰片免费网站
  • 网站充值支付宝收款怎么做wordpress全站音乐
  • 全国建设造价信息网站湛江vi设计公司