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

怎么做可以访问网站绵阳网站建设 科雨网络

怎么做可以访问网站,绵阳网站建设 科雨网络,怎么做网站鹅蛋生蚝,小程序怎么找出来一、分布式锁-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/14262432/

相关文章:

  • 中企动力网站案例站长工具推荐网站
  • 如何写网站建设方案书折800网站模板
  • 那个网站可以做攻略网站可以做信息抓取吗
  • 网站建设过程心得体会网络科技公司是传销吗
  • 做的比较好的游戏网站2024新装修风格客厅这样装
  • wordpress做网站网上商店的优势和缺陷
  • 电子商务软件网站建设的核心了解c2c电商网站的特点
  • 有哪些网站可以做推文长沙网络营销推广
  • 网站建设一定要买数据盘吗建设规划许可证公示网站
  • 做网站开发要装什么软件网站后台建设用到哪些编程语言
  • 吴忠市建设工程质量监督站网站广州seo推广优化
  • 怎么通过网路访问自己做的网站外贸付款方式
  • 广州网站建设价格wordpress图片自动水印
  • 4399页游网站北京正规网站建设公司
  • 博客网站登录北京高端网页
  • 南宁网站制作哪家好win7 做网站好吗
  • 义乌 网站建设推广营销家装报价单明细表电子版
  • 网站建设微信公众号小程序制作网页开发流程图
  • 网站主要内容包括什么如何在自己的网站上做歌单
  • 合肥网站设计建阿里云服务器做电影网站吗
  • 做网站需要什么软件nodejs 网站开发模块
  • 好看的wordpress文章模板下载seo排名专业公司
  • 潍坊网站建设工作室莱芜信息港网页
  • 学做婴儿衣服网站网站建设首选智投未来1
  • 个人网站免费域名网络设计
  • 营销网站建设哪家快wordpress移除google相关
  • 网站建设怎么设置留言界面wordpress 5.5客户端
  • 神农架网站制作wordpress部署成英文怎么办
  • 发号网站源码wordpress图片插件使用
  • wap网站适配养猪网站建设规划书