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

做招聘网站的风投郑州网站建设哪家好

做招聘网站的风投,郑州网站建设哪家好,做网站起什么名字比较好,安徽省政府建设实名制网站Redisson Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务,其中就包含了各种分布式锁的实现。简单说就是redis在分布式系统上工…

Redisson

Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务,其中就包含了各种分布式锁的实现。简单说就是redis在分布式系统上工具的集合,Redission提供了分布式锁的多种多样的功能.

使用redission

自定义redis分布式锁无法自动续期,比如,一个锁设置了1分钟超时释放,如果拿到这个锁的线程在一分钟内没有执行完毕,那么这个锁就会被其他线程拿到,可能会导致严重的线上问题,在秒杀场景下,很容易因为这个缺陷导致的超卖了。

redission 超时时间1m 执行逻辑的时候3m

Redisson 锁加锁流程:

线程去获取锁,获取成功则执行lua脚本,保存数据到redis数据库。如果获取失败: 一直通过while循环尝试获取锁(可自定义等待时间,超时后返回失败)。Redisson提供的分布式锁是支持锁自动续期的,也就是说,如果线程仍旧没有执行完,那么redisson会自动给redis中的目标key延长超时时间,这在Redisson中称之为 Watch Dog 机制。

java中的使用

引入redisson相关jar

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!--配置redission--><dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.12.5</version></dependency>

application文件

# 设置redis的信息
spring.redis.host=192.168.253.16
spring.redis.database=0
spring.redis.password=root
spring.redis.port=6379

配置类:

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RedissonConfig {@Value("${spring.redis.host}")private String host;@Value("${spring.redis.port}")private String port;@Value("${spring.redis.password}")private String redisPassword;@Beanpublic RedissonClient getRedisson(){Config config = new Config();
// //多节点config.useClusterServers()//单机模式  依次设置redis地址和密码config.useSingleServer().setAddress("redis://" + host + ":" + port).setPassword(redisPassword);return Redisson.create(config);}
}

controller(控制层)

import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import java.util.Objects;@RestController
@RequestMapping("/redisLock")
public class RedisLockController {@Resourceprivate StringRedisTemplate stringRedisTemplate;@Resourceprivate RedissonClient redisson;private static final String REDIS_KEY = "redis_test";private static final int MAX_SIZE = 10;/*** 初始化库存*/@PostMapping("/init")public void init() {stringRedisTemplate.opsForValue().set(REDIS_KEY, String.valueOf(MAX_SIZE));}/*** 扣库存业务*/@PostMapping("/test")public void exportInventory() {String lockKey = "product001";RLock lock = redisson.getLock(lockKey);try {lock.lock();int s = Integer.parseInt(Objects.requireNonNull(stringRedisTemplate.opsForValue().get(REDIS_KEY)));System.out.printf("1号服务:库存当前为:" + s + "\n");//stringRedisTemplate.opsForValue().set(REDIS_KEY, String.valueOf(s));if(s>0) {stringRedisTemplate.opsForValue().decrement(REDIS_KEY);}} catch (Exception e) {} finally {lock.unlock();}}
}

使用jmeter测试:

写两个一模一样的项目 通过jmeter访问 redisLock/test

两个服务中的数据不重复即可

http://www.dinnco.com/news/78001.html

相关文章:

  • 做网站生成二维码达内教育
  • 苏州网站建设公司哪家好站长工具 站长之家
  • 做网站市场价格凡科建站网站
  • 云瓣科技做网站人教版优化设计电子书
  • 网站弹窗怎么做互联网登录的网站名
  • 重庆建设厅网站公示公告栏品牌网络推广
  • 建自己的网站免费b2b推广网站大全
  • 德阳城乡建设部网站首页google play谷歌商店
  • 企业网站建设全套流程seo服务公司怎么收费
  • 二级建造师官网查询系统旺道seo营销软件
  • 还有什么网站可以做面包车拉货百度信息流广告平台
  • 短视频培训机构网站seo基础
  • 网站百度v认证百度网站禁止访问怎么解除
  • 葫芦岛建设工程信息网站设计模板网站
  • 做淘宝网站需要多大空间怎样交换友情链接
  • 52麻将官方网站做代理泰州seo外包
  • 找别人做网站可靠吗seo项目
  • 新网站做seo 的效果网站优化名词解释
  • 企业网站建站系统哪个好用线上销售渠道有哪些
  • 怎么用wordpress建站推广工具
  • ps建设此网站的必要与可行性十五种常见的销售策略
  • 不知此网站枉做男人的网站百度账号一键登录
  • 阳光保险官方网站seo自学网官网
  • 如何做网站运营seo外链优化方法
  • 东莞市网站seo站长平台
  • 定西建设厅网站品牌策划书案例
  • 济南做网站的好公司有哪些宁波网络推广运营公司电话
  • 前端和后端哪个好学手机清理优化软件排名
  • 最好的微网站建设公司推荐网站推广沈阳
  • wordpress 建站专家seo服务外包报价