@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
에 관련 종속성 추가:
<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.pool
与Spring 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 마이크로 클래스)볼 수 있는 내용:CacheManager type
为org.springframework.data.redis.cache.RedisCacheManager
,而不是上一篇中的EhCacheCacheManager
첫 번째 출력 줄이 사라졌습니다.
두 번째 쿼리 시 SQL 문이 출력되지 않습니다. 캐시를 얻었습니다
위 내용은 Spring Boot에서 중앙 집중식 캐시 Redis를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!