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

增城网站公司电话网页设计作业 介绍家乡

增城网站公司电话,网页设计作业 介绍家乡,iis建多个网站,网站开发职业规划介绍Redisson 什么是 Redisson?来自于官网上的描述内容如下! Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格客户端(In-Memory Data Grid)。它不仅提供了一系列的 redis 常用数据结构命令服务,还提供了…

介绍Redisson

什么是 Redisson?来自于官网上的描述内容如下!

Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格客户端(In-Memory Data Grid)。它不仅提供了一系列的 redis 常用数据结构命令服务,还提供了许多分布式服务,例如分布式锁、分布式对象、分布式集合、分布式远程服务、分布式调度任务服务等等。

相比于 Jedis、Lettuce 等基于 redis 命令封装的客户端,Redisson 提供的功能更加高端和抽象

配置Redisson

引入依赖

        <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.13.6</version></dependency>

配置客户端类

@Configuration
public class RedisConfig {@Beanpublic RedissonClient redissonClient(){Config config = new Config();//添加了单机redis地址,也可以使用useClusterServers()添加集群地址config.useSingleServer().setAddress("redis://192.168.2.129:6379").setPassword("linux02");return Redisson.create(config);}
}

 使用Redisson分布式锁

Long id = UserHolder.getUser().getId();RLock redisLock = redissonClient.getLock("lock:order:" + id);//尝试获取锁boolean tryLock = redisLock.tryLock();//判断锁是否获取成功if (!tryLock){return Result.fail("不允许重复下单");}try {//锁加到这里,事务提交后才释放锁//获取事务的动态代理对象,需要在启动类加注解暴漏出对象IVoucherOrderService proxy = (IVoucherOrderService)AopContext.currentProxy();//拿到动态代理对象return proxy.createVoucherOrder(voucherId, voucher);//使用动态代理类的对象,事务可以生效} finally {redisLock.unlock();}

不可重入锁

在同一个线程中,method1获取锁后,调用method2,method2中尝试获取锁,此时锁已经被method1获取,则method2获取锁失败,这就是不可重入锁,前面实现的锁就是不可重入锁!

Redisson可重入锁

        可重入锁,从字面来理解,就是可以重复进入的锁,也叫做递归锁,指的是同一线程外层函数获得锁之后,内层递归函数仍然有获取该锁的代码,但不受影响。

        ReentrantLocksynchronized都是可重入锁。

        在一个类中,如果synchronized方法1调用了synchronized方法2,方法2是可以正常执行的,这说明synchronized是可重入锁。否则,在执行方法2想获取锁的时候,该锁已经在执行方法1时获取了,那么方法2将永远得不到执行。

 为了实现可重入锁,redis中使用hash类型不再使用string类型,为什么要使用hash类型,就不得不说到Redisson可重入锁在redis中的实现原理:

实现原理 :       

        在同一线程中,method1成功获取锁后调用method2,method2也尝试获取锁,此时要先判断method2所在线程和method1所在线程是否是同一线程,若是,则method2也获取锁成功,它和method1显然获取了同一个锁,那么该锁被获取次数+1,而这个锁被获取的次数我们需要记录,也就是说value不仅要记录 线程名 还要记录 锁被获取的次数,那么我们就由此采用hash类型更合理!

为什么记录锁被获取的次数?

一个业务的完成可能要多次获取锁,如一个业务中执行了method1,method1调用了method2,method2调用了method3,这三个方法都加同一个锁(可重入锁),当method3执行完后,并不能立刻释放method3的锁,而是锁被获取的次数-1因为锁是共享的,此时method1和method2还没执行完不能释放锁,那么什么时候释放锁?当然是锁被获取的次数减为0了,说明此时已经没有方法获取锁,那么可以安全的释放可重入锁了。

So锁被获取的次数就是我们判断是否要释放锁的依据!

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

相关文章:

  • 池州微信网站建设网站怎么做才能将名声打响
  • 做网站公司职员工资ps做网站首页怎么
  • seo品牌优化整站优化高端营销型网站建设
  • 建行官方网站 - 百度外包
  • 平台网站建设后台源码WordPress批量修改文章
  • 建设银行宁波招聘网站郑州云拓网站建设公司
  • 整站排名优化品牌网站建设实训内容
  • 做盗链电影网站怎么样软件研发过程管理
  • 贞丰网站建设上海公司黄页网站
  • 做网站要学的知识个体户经营异常如何网上解除
  • 大渡口的网站开发公司电话宁波网站建设与推广方案
  • 无锡建设公司网站怎么看网站是用什么程序做的
  • 网站建设招标2017网站备案网站简介
  • 顺的品牌网站设计价位百度快照推广排名
  • 知名商业网站有哪些郑州最好的男科医院是什么医院
  • 品牌网站设计工作室wordpress文章数据库表
  • 宿迁沭阳网站建设怎么创建微信公众号平台
  • 内蒙古工程建设招投标中心网站衡水网站建设
  • 安徽美丽乡村建设网站干部网络培训平台
  • 湖南做网站360o江西省赣州市章贡区邮政编码
  • 襄阳专业网站建设wordpress一句话插件
  • 利用php做直播网站网址大全360
  • 自己做发卡网站支付接口广告设计培训班有用吗
  • 做购物网站写数据库的流程wordpress first主题
  • 外贸网站搜索 引擎优化方法深圳注册公司可以申请车牌吗
  • 做学习交流网站房产网上查询
  • 中国网站建设网网站排名软件推荐
  • 可以做结构式的网站微信小说分销平台
  • 网站赞赏代做网站修改维护
  • 大连企业网站哪一家好石家庄做网站比较好的公司有哪些