redisson实现分布式锁

目录

目录

一、pom.xml配置 

二、application.properties配置

三、redisson的java配置类

四、具体使用 

五、jemeter并发测试

其他使用 



1、加锁实现关键:
Redis的setNX命令
 
2、分布式加锁实现方式:
1)先加锁,加所有执行程序,程序执行完毕通过finally模块关闭锁。弊端:如果程序在执行finally之前程序异常崩溃锁将不会被释放

2)先加锁,加锁成功后进行过时操作,当并发量达到一定程度那么程序很可能会变慢,如原设置加锁时长为30秒,如果程序运行超过30秒,那么锁将被提前释放, 下一个线程将可以和上个线程同时操作,并且并发量足够大这种情况将一直存在,此时相当于锁失效

3)同时加锁并设置加锁时间,当并发量达到一定程度那么程序很可能会变慢,如原设置加锁时长为30秒,如果程序运行超过30秒,那么锁将被提前释放,下一个线程将可以和上个线程同时操作,并且并发量足够大这种情况将一直存在,此时相当于锁失效

4)redisson加锁:加锁、锁时长配置为原子性同步执行,,并且如果遇见大并发量造成的程序运行超过指定加锁时长会对线程的锁进行弹性续时,如果程序正常运行时长没超过加锁时长将按照程序运行时长正常释放锁

一、pom.xml配置 

spring-data-redis:redis基本连接,redisTempldate操作等依赖

redisson:分布式锁依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency> 
<dependency>
     <groupId>org.redisson</groupId>
     <artifactId>redisson</artifactId>
     <version>3.5.0</version>
</dependency>

二、application.properties配置

## redis setting
spring.redis.host=127.0.0.1
spring.redis.password=123456
spring.redis.port=6379
## redis lettuce pool setting 
spring.redis.lettuce.pool.max-active=20
spring.redis.lettuce.pool.max-idle=10
spring.redis.lettuce.pool.min-idle=5

三、redisson的java配置类

package com.leadpms.qianlistandard.web.config;

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;

/**
 * Redisson 配置类
 *
 * @author Shaoyu Liu
 * @date 2021/6/2 16:31
 **/
@Configuration
public class RedissonConfig {


    @Value("${spring.redis.host}")
    private String host;

    @Value("${spring.redis.port}")
    private String port;

    @Value("${spring.redis.password}")
    private String password;


    @Bean
    public RedissonClient getRedisson() {
        Config config = new Config();
        config.useSingleServer().setAddress("redis://" + host + ":" + port).setPassword(password);
        //添加主从配置
//        config.useMasterSlaveServers().setMasterAddress("").setPassword("").addSlaveAddress(new String[]{"",""});
        return Redisson.create(config);
    }


}<
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值