Spring boot
후 2.X 시스템 redis
전환된다 Lettuce
적합하기 위하여. 실현 Spring boot
아이디어와 자동 조립의 장점을 이미 제공하는 시스템을 사용하는 시간을 사용하려고하고, 그렇지 않은 경우 다음 사용자 정의 관련있는 bean
객체.
레디 스 소개
레디 스 유형, 키 - 값 데이터베이스를 기록 할 수있는 메모리의 지속성에 따라 ANSI C, 지원 네트워크로 작성된 오픈 소스 사용하고, 다 언어 API를 제공한다. 레디 스 스레드에 안전하면서 상대적으로 더 많은 스토리지 유형에 비해 memcached를 지원, (문자, 해시, 세트, 세트, 목록, GEO를 주문했다). 2010년 3월 15일 때문에, 레디 스 개발 작업은 VM웨어가 주최 한 2013 년은 중추 후원 월, 레디 스 개발을 시작했다.
상추 & Jedis
양상추와 Jedis은 클라이언트 프로그램 레디 스 서버에 연결되어 있습니다. 당신이 연결 풀을 사용하지 않는 구현에 Jedis 직접 비 스레드 안전 레디 스 서버, 멀티 스레드 환경을 연결, Jedis의 각 인스턴스에 대한 물리적 연결을 증가시킨다. (StatefulRedisConnection)의 상추 기반의 Netty 연결 예를 들어, 동시에 여러 스레드 사이에 액세스 할 수 있으며, 다중 스레드 환경에서 충족하기 위해 스레드 안전, 동시 액세스, 그리고 확장 성 디자인, 연결 인스턴스는 충분한 수요가 될 수 없습니다 연결 인스턴스를 높일 수 있습니다.
수입 의존
에서 pom.xml
추가 spring-boot-starter-data-redis
로 의존성, Spring boot 2.x
이후 버전이 제공하는 기본 기본 구현이 사용하는 것 Lettuce
대신에 jedis
. 그러나 两种方式都提供的默认的实现
, 프로젝트의 자신의 버전에 따라 선택할 수 있습니다
상추 버전
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
复制代码
jedis 버전
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
复制代码
구성 속성
에서 application.yaml
다음과 같은 추가, 해당 소스 코드는 여기에서 찾을 수 있습니다org.springframework.boot.autoconfigure.data.redis.RedisProperties
spring:
redis:
host: 192.168.123.225
database: 0
port: 6379
password:
# 保留一个
lettuce:
pool:
max-active: 8
max-wait: -1ms
max-idle: 8
min-idle: 1
jedis:
pool:
max-active: 8
max-wait: -1ms
max-idle: 8
min-idle: 1
复制代码
자동 구성보기 레디 스
내 앞에 말한에서의 사용을 위해 Spring
이미 좋은 제공 bean
, 특정 위치 org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
발견이 시간에 Spring
자동으로 주입하기 위해 도움이되었습니다 redisTemplate
StringRedisTemplate
RedisConnectionFactory
기본은 우리의 일반적인 수요를 충족하지 않는이 시간,이 시간은 하나가 정의 할 필요 RedisTemplate
없이, 할 수있다 모든 개체는 자신의 재 지정을, Lettuce
그리고 Jedis
서로 다른 전환 할 수 있습니다 단지를 추가하거나 특정 자바 클래스를 제외, 자신의 실현이다RedisConnectionFactory
@Configuration
@ConditionalOnClass({RedisOperations.class})
@EnableConfigurationProperties({RedisProperties.class})
@Import({LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class})
public class RedisAutoConfiguration {
public RedisAutoConfiguration() {
}
@Bean
@ConditionalOnMissingBean(
name = {"redisTemplate"}
)
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
RedisTemplate<Object, Object> template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
@Bean
@ConditionalOnMissingBean
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
StringRedisTemplate template = new StringRedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}
复制代码
일부 블록
@Configuration
@ConditionalOnClass({GenericObjectPool.class, JedisConnection.class, Jedis.class})
class JedisConnectionConfiguration extends RedisConnectionConfiguration {
...
@Configuration
@ConditionalOnClass({RedisClient.class})
class LettuceConnectionConfiguration extends RedisConnectionConfiguration {
private final RedisProperties properties;
...
复制代码
코드를 직접 여기에서 보는 테스트 할 수있을 것입니다 함께 배울 SpringBoot | 제 9 장 : 상추 레디 스 통합