springboot의 레디 스 사용 배울 소스에서 | 자바를 다시 배우기

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 장 : 상추 레디 스 통합

참조 기사

추천

출처juejin.im/post/5d53bffc6fb9a06af13d6175