1. 程式人生 > 實用技巧 >Redisson分散式鎖在Java應用中的使用

Redisson分散式鎖在Java應用中的使用

引入Redisson依賴,並配置相關的Bean

Spring 應用

通過Maven引入依賴

<dependency>
   <groupId>org.redisson</groupId>
   <artifactId>redisson</artifactId>
   <version>3.14.0</version>
</dependency>

配置相關的Bean

建立配置類的Bean:

Config config = new Config();
config.useClusterServers()
       // use "rediss://" for SSL connection
      .addNodeAddress("redis://127.0.0.1:7181");

建立 Redisson 例項:

// 同步與非同步API
RedissonClient redisson = Redisson.create(config);

此外還有Reactive API和RxJava2 API相關的客戶端,具體檢視Redisson在GitHub上的說明

Spring Boot 應用

通過Maven引入依賴

<dependency>
   <groupId>org.redisson</groupId>
   <artifactId>redisson-spring-boot-starter</artifactId>
   <version>3.14.0</version>
</dependency>

注意,如果通過其他方式引入了redisson-spring-data模組,則需要根據Spring Boot的版本,調整redisson-spring-data的版本,具體的版本適配見這裡

在application.properties中新增配置

基本的Redis配置(其中host、port、password必須配置):

spring:
  redis:
    database: 
    host:
    port:
    password:
    ssl: 
    timeout:
    cluster:
      nodes:
    sentinel:
      master:
      nodes:

根據需要新增Redisson相關的配置:

  #path to config - redisson.yaml
  redisson: 
    file: classpath:redisson.yaml
    config: |
      clusterServersConfig:
        idleConnectionTimeout: 10000
        connectTimeout: 10000
        timeout: 3000
        retryAttempts: 3
        retryInterval: 1500
        failedSlaveReconnectionInterval: 3000
        failedSlaveCheckInterval: 60000
        password: null
        subscriptionsPerConnection: 5
        clientName: null
        loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
        subscriptionConnectionMinimumIdleSize: 1
        subscriptionConnectionPoolSize: 50
        slaveConnectionMinimumIdleSize: 24
        slaveConnectionPoolSize: 64
        masterConnectionMinimumIdleSize: 24
        masterConnectionPoolSize: 64
        readMode: "SLAVE"
        subscriptionMode: "SLAVE"
        nodeAddresses:
        - "redis://127.0.0.1:7004"
        - "redis://127.0.0.1:7001"
        - "redis://127.0.0.1:7000"
        scanInterval: 1000
        pingConnectionInterval: 0
        keepAlive: false
        tcpNoDelay: false
      threads: 16
      nettyThreads: 32
      codec: !<org.redisson.codec.FstCodec> {}
      transportMode: "NIO"

然後在程式碼中,就可以通過自動裝配,直接使用RedissonClientRedisTemplate/ReactiveRedisTemplate 等Bean了。