当前位置: 首页 > 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://www.shuangfujiaoyu.com/news/30584.html

相关文章:

  • wordpress 增加小工具seo教程 百度网盘
  • wordpress里面的副标题啥意思seo网站优化快速排名软件
  • 不同类型网站优化短视频营销推广方案
  • 上海人才网积分查询东莞百度快照优化排名
  • 做美缝在哪个网站接单国外免费源码共享网站
  • 建设网站需要哪个软件seo优化策略
  • 万能浏览器appseo百度贴吧
  • 网站开发技术 javaseo云优化如何
  • 网页设计与网站建设步骤媒体宣传推广方案
  • 做网站首页郑州百度seo排名公司
  • 科技网站设计淘宝网页版
  • 什么网站可以做拍a发布会淘宝指数官网的网址
  • 网站怎么制作百度安装
  • 在建设一个公司网站多少钱东莞营销型网站建设
  • 那个网站做3d网站模板套用教程
  • 买做指甲的材料在哪个网站百度正版下载恢复百度
  • 做app网站需要什么热点新闻事件素材
  • 如何制作个人手机网站中小型企业网站设计与开发
  • 旅游网站建设首选赢旅动力世界球队最新排名
  • 网站软件资源广州网络营销推广
  • elementui 企业官网模板安卓优化大师清理
  • 职业生涯规划大赛活动目的整站优化和单词
  • 网站建设最新教程视频搜索引擎平台
  • 国外做ppt网站深圳app推广平台
  • 中山专业网站建设价格网络优化的三个方法
  • 互联网培训机构排名前十搜索引擎优化培训免费咨询
  • 交易网站seo怎么做有趣的网络营销案例
  • 沧州兼职网站建设传统营销方式有哪些
  • 广州兼职网网站建设南京百度快速排名优化
  • 怎么开网站做站长网络推广哪个平台最好