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

商务丈哥seo博客工具

商务,丈哥seo博客工具,平台开发多少钱,网站建设与管理 ppt模板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.15wanjia.com/news/52819.html

相关文章:

  • 做算命网站赚钱吗大数据免费查询平台
  • 如何提交网站连接到百度武汉百度关键词推广
  • 响应式设计网站案例百度指数搜索热度大学
  • 怎么是一个网站看起来高大上抖音seo优化公司
  • 惠城网站制作精准推广的渠道有哪些
  • 上海工程建设信息网站郑州网站seo外包公司
  • 去哪里做网站安全等级保护级别品牌推广百度seo
  • 青岛做网站企业排名百度框架户开户渠道代理
  • 猪八戒网做网站如何付款2345网址导航怎么下载
  • 微信连接微网站吗站长工具域名查询ip
  • 网页微信注册新号怎么注册南宁网络优化seo费用
  • 春播网站是谁做的品牌策划方案模板
  • 做图片视频的网站有哪些问题登封搜索引擎优化
  • 有什么网站做交流会个人网页设计作品欣赏
  • 简单网站建设seo流量优化
  • 做网站编辑心得手机搜索引擎排名
  • wordpress要不要放网站地图网络营销成功案例
  • 做网站哪些软件云盘搜索引擎入口
  • 做网站为何要续费百度网址是多少 百度知道
  • 网络公司建网站搜索引擎是什么意思啊
  • 网站备案完电信微信公众号推广
  • 乐山市做网站的公司图片百度搜索
  • 如何查找做网站的服务商sem网站推广怎么做
  • wordpress扫码付费衡阳seo优化报价
  • 网站做重新做_域名不换_空间想转到新网站这边高明公司搜索seo
  • 美声广告网站建设郑州专业seo哪家好
  • wordpress旅游网站软文营销的技巧有哪些
  • 手机端做的优秀的网站信息流广告
  • 无锡 做网站外链群发
  • 网站做收款要什么条件网站seo顾问