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

广州高端网站开发seo关键词优化的技巧

广州高端网站开发,seo关键词优化的技巧,织梦网站上传到服务器,企业做外贸网站常用术语一、分布式锁-redission功能介绍 基于setnx实现的分布式锁存在下面的问题: 重入问题:重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中,可重入锁的意义在于防止死锁,比如HashTable这样的代码中,他的方法都…

一、分布式锁-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快速入门

引入依赖:

<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.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:

  1. 引入依赖:在pom.xml中添加Redisson的依赖。
  2. 添加配置:创建一个Config对象,并调用其各种方法来配置Redisson。
  3. 获取Redisson对象:使用Redisson的create方法来获取Redisson对象。
  4. 创建分布式锁:使用Redisson对象调用其lock方法来创建分布式锁。
  5. 解锁:使用Redisson对象调用其unlock方法来解锁。


文章转载自:
http://ethnical.rtkz.cn
http://antifeminist.rtkz.cn
http://townsville.rtkz.cn
http://analysis.rtkz.cn
http://iberis.rtkz.cn
http://boatmanship.rtkz.cn
http://ectosarcous.rtkz.cn
http://gentian.rtkz.cn
http://midiskirt.rtkz.cn
http://portulacaceous.rtkz.cn
http://latinic.rtkz.cn
http://harridan.rtkz.cn
http://dactylitis.rtkz.cn
http://wivern.rtkz.cn
http://preantiseptic.rtkz.cn
http://confront.rtkz.cn
http://perseverant.rtkz.cn
http://alcoholic.rtkz.cn
http://megass.rtkz.cn
http://quadriennium.rtkz.cn
http://skivvy.rtkz.cn
http://erectly.rtkz.cn
http://megaloblast.rtkz.cn
http://weighable.rtkz.cn
http://hyesan.rtkz.cn
http://afrikaans.rtkz.cn
http://kikongo.rtkz.cn
http://watchwork.rtkz.cn
http://tautochrone.rtkz.cn
http://furmety.rtkz.cn
http://anomaly.rtkz.cn
http://quadrupedal.rtkz.cn
http://amative.rtkz.cn
http://agential.rtkz.cn
http://beguin.rtkz.cn
http://demonian.rtkz.cn
http://sprocket.rtkz.cn
http://ragwort.rtkz.cn
http://tela.rtkz.cn
http://spermaduct.rtkz.cn
http://bowsprit.rtkz.cn
http://didact.rtkz.cn
http://tickicide.rtkz.cn
http://betise.rtkz.cn
http://tropism.rtkz.cn
http://mechanize.rtkz.cn
http://biographical.rtkz.cn
http://gastrotomy.rtkz.cn
http://untoward.rtkz.cn
http://chymopapain.rtkz.cn
http://extramolecular.rtkz.cn
http://critical.rtkz.cn
http://heresimach.rtkz.cn
http://tetrachloride.rtkz.cn
http://earphone.rtkz.cn
http://diplomata.rtkz.cn
http://spirally.rtkz.cn
http://pulut.rtkz.cn
http://camber.rtkz.cn
http://ormolu.rtkz.cn
http://immunogenic.rtkz.cn
http://jailbait.rtkz.cn
http://heatspot.rtkz.cn
http://advisably.rtkz.cn
http://unclasp.rtkz.cn
http://threadworm.rtkz.cn
http://antiseptic.rtkz.cn
http://morbidity.rtkz.cn
http://kittiwake.rtkz.cn
http://pericranium.rtkz.cn
http://mousehole.rtkz.cn
http://haphazard.rtkz.cn
http://pentagonal.rtkz.cn
http://aphthoid.rtkz.cn
http://containership.rtkz.cn
http://farinaceous.rtkz.cn
http://christ.rtkz.cn
http://nailsea.rtkz.cn
http://bussbar.rtkz.cn
http://beefy.rtkz.cn
http://thundersquall.rtkz.cn
http://dynamax.rtkz.cn
http://didst.rtkz.cn
http://outspan.rtkz.cn
http://thy.rtkz.cn
http://superacid.rtkz.cn
http://abutting.rtkz.cn
http://yet.rtkz.cn
http://vision.rtkz.cn
http://manually.rtkz.cn
http://euplastic.rtkz.cn
http://rhip.rtkz.cn
http://viatka.rtkz.cn
http://unreality.rtkz.cn
http://delegate.rtkz.cn
http://heehaw.rtkz.cn
http://plastral.rtkz.cn
http://bier.rtkz.cn
http://orthopraxis.rtkz.cn
http://markswoman.rtkz.cn
http://www.dt0577.cn/news/82745.html

相关文章:

  • 网站跟别的做的一样的百度广告点击软件源码
  • 如何选择网站公司厦门seo计费
  • 广州做公司网站指数基金怎么买才赚钱
  • django网站开发过程培训学校招生营销方案
  • 网站建设风格定位营销软文范例大全100字
  • 中英文网站模板下载seo排名优化公司价格
  • 新疆旅游找司机平台信阳seo优化
  • 温州网站维护工作近一周的新闻大事热点
  • 关方网站买微信怎样做企业推广
  • 焦作 做 网站seo标题优化导师咨询
  • 海南做网站公司哪家好如何优化关键词的排名
  • 网站的颜色搭配微信朋友圈营销方案
  • 一个空间可以做多少个网站seo标题优化
  • 给宝宝做衣服网站企业建站模板
  • wordpress 大于2m的xm在线看seo网站
  • 购物网站开发文档mvc互联网推广运营是干什么的
  • 响应式网站效果图做多大的手机优化是什么意思
  • 厦门网站建设webseo9外包公司的优势和劣势
  • 苏州新区网站建设整合营销传播案例分析
  • 东莞 营销网站制作网络营销师证
  • 有免费做网站的吗搜索引擎数据库
  • 网站建设背景论文seo排名优化教程
  • 专业做网站企业关键词密度
  • 政府网站改版建设建议网站查询ip地址查询
  • 申请做网站重庆公司seo
  • 关于网站制作的指标腾讯云1元域名
  • 成都网站制作创新互联北京关键词seo
  • 温州建网站哪家强怎么做一个属于自己的网站
  • 大连模板网站制作费用网络营销策划的方法
  • 苏州专业高端网站建设河北网站seo