>  기사  >  데이터 베이스  >  Spring Boot에서 중앙 집중식 캐시 Redis를 사용하는 방법

Spring Boot에서 중앙 집중식 캐시 Redis를 사용하는 방법

PHPz
PHPz앞으로
2023-05-26 10:49:051462검색

직접 시도해 보세요

사용자 엔터티 정의

@Entity @데이터 @NoArgsConstructor 공개 클래스 사용자는 직렬화 가능 {

@Id
    @GeneratedValue
    private Long id;


    private String name;
    private Integer age;


    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
}

사용자 엔터티의 데이터 액세스 구현(캐시 주석 포함)

@CacheConfig(cacheNames = "users")을 구현합니다. 공용 인터페이스 UserRepository는 JpaRepository를 확장합니다. {

@Cacheable
    User findByName(String name);


}

(권장 과정: Spring 튜토리얼)

이 프로젝트 변환을 시작해 보겠습니다.

1단계: pom.xml에 관련 종속성 추가:

org.springframework.boot spring-boot-starter-data-redis

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>

Spring Boot 1.x的早期版本中,该依赖的名称为spring-boot-starter-redis,所以在Spring Boot 1.x기본 튜토리얼의 여기와 다릅니다.

2단계: 구성 파일에 구성 정보를 추가하고 로컬 작업을 예로 들어 보겠습니다. 예:

spring.redis.host=localhost spring.redis.port=6379 spring.redis.lettuce.pool.max-idle=8 spring.redis.lettuce.pool.max-active=8 spring.redis.lettuce.pool.max-wait=-1ms spring.redis.lettuce.pool.min-idle=0 spring.redis.lettuce.shutdown-timeout=100ms

연결 풀 구성과 관련하여 다음을 참고하세요.

Redis的连接池配置在 1.x 版本中前缀为spring.redis.poolSpring Boot 2.x有所不同。在 1.x 版本中采用jedis作为连接池,而在 2.x 版本中采用了lettuce연결 풀로서 위 구성은 모두 기본값이며 실제로 프로덕션에서는 적절하게 추가 수정이 필요합니다. 배포 상황 및 비즈니스 요구 사항에 따라

단위 테스트를 다시 시도해 보겠습니다.

@Slf4j @RunWith(SpringRunner.class) @SpringBootTest public class Chapter54ApplicationTests {

@Autowired
    private UserRepository userRepository;


    @Autowired
    private CacheManager cacheManager;


    @Test
    public void test() throws Exception {
        System.out.println("CacheManager type : " + cacheManager.getClass());


        // 创建1条记录
        userRepository.save(new User("AAA", 10));


        User u1 = userRepository.findByName("AAA");
        System.out.println("第一次查询:" + u1.getAge());


        User u2 = userRepository.findByName("AAA");
        System.out.println("第二次查询:" + u2.getAge());
    }


}

테스트 출력을 실행하면 다음을 얻을 수 있습니다.

CacheManager 유형: 클래스 org.springframework.data.redis.cache.RedisCacheManager Hibernate: 업데이트를 위해 hibernate_sequence에서 id_val로 next_val을 선택합니다. 최대 절전 모드: hibernate_sequence set next_val= 업데이트? 여기서 nextval=? 최대 절전 모드: 사용자(나이, 이름, ID) 값에 삽입(?, ?, ?) 2020-08-12 16:25:26.954 INFO 68282 --- [ main] io.lettuce.core.EpollProvider : 선택적 epoll 라이브러리 없이 시작 2020-08-12 16:25:26.955 INFO 68282 --- [ main] io.lettuce.core.KqueueProvider : 선택적 kqueue 라이브러리 없이 시작 최대 절전 모드: user0에서 user0.id를 id10로, user0_.age를 age20로, user0_.name을 name30로 user0에서 선택합니다. 여기서 user0

.name=? 첫 번째 쿼리: 10 두 번째 쿼리: 10

(권장 마이크로 클래스: Spring 마이크로 클래스)

볼 수 있는 내용:
  1. CacheManager typeorg.springframework.data.redis.cache.RedisCacheManager,而不是上一篇中的EhCacheCacheManager첫 번째 출력 줄이 사라졌습니다.

  2. 두 번째 쿼리 시 SQL 문이 출력되지 않습니다. 캐시를 얻었습니다

위 내용은 Spring Boot에서 중앙 집중식 캐시 Redis를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제