springboot整合redisson
阿新 • • 發佈:2018-12-20
新增依賴:
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.5.0</version>
</dependency>
yml配置檔案:
單機配置:redisson-single.yml
singleServerConfig: idleConnectionTimeout: 10000 pingTimeout: 1000 connectTimeout: 10000 timeout: 3000 retryAttempts: 3 retryInterval: 1500 reconnectionTimeout: 3000 failedAttempts: 3 password: 123456 subscriptionsPerConnection: 5 clientName: null address: "redis://192.168.200.64:6379" subscriptionConnectionMinimumIdleSize: 1 subscriptionConnectionPoolSize: 50 connectionMinimumIdleSize: 32 connectionPoolSize: 64 database: 0 dnsMonitoring: false dnsMonitoringInterval: 5000 threads: 0 nettyThreads: 0 codec: !<org.redisson.codec.JsonJacksonCodec> {} "transportMode":"NIO"
叢集配置:redisson-cluster.yml
clusterServersConfig: idleConnectionTimeout: 10000 pingTimeout: 1000 connectTimeout: 10000 timeout: 3000 retryAttempts: 3 retryInterval: 1500 reconnectionTimeout: 3000 failedAttempts: 3 password: null subscriptionsPerConnection: 5 clientName: null loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {} slaveSubscriptionConnectionMinimumIdleSize: 1 slaveSubscriptionConnectionPoolSize: 50 slaveConnectionMinimumIdleSize: 32 slaveConnectionPoolSize: 64 masterConnectionMinimumIdleSize: 32 masterConnectionPoolSize: 64 readMode: "SLAVE" nodeAddresses: "redis://redis-server:6371" "redis://redis-server:6372" "redis://redis-server:6373" scanInterval: 1000 threads: 0 nettyThreads: 0 codec: !<org.redisson.codec.JsonJacksonCodec> {} "transportMode":"NIO"
注入bean,自動載入配置檔案:
import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.redisson.config.Config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.ClassPathResource; import java.io.IOException; @Configuration public class RedissonConfig { @Value("${redisCluster}") private boolean redisCluster; @Bean public RedissonClient redissonClient() throws IOException { return Redisson.create( Config.fromYAML(new ClassPathResource("redisson-" + (redisCluster ? "cluster" : "single") + ".yml").getInputStream()) ); } }
使用:
@Component
public class test{
@Autowired
private RedissonClient redissonClient;
public void test(){
RLock lock= redissonClient.getLock("test");
try {
lock.lock();
......業務程式碼略
} catch (Exception ex) {
log.error("同步資料到中心失敗", ex);
} finally {
lock.unlock();
}
}
}