> 데이터 베이스 > Redis > SpringBoot 캐싱 메커니즘의 Redis 독립형 캐시를 적용하는 방법

SpringBoot 캐싱 메커니즘의 Redis 독립형 캐시를 적용하는 방법

WBOY
풀어 주다: 2023-06-03 12:41:50
앞으로
938명이 탐색했습니다.

Redis 독립형 캐시

Ehcache와 마찬가지로 클래스 경로에 Redis가 존재하고 Redis가 구성된 경우 RedisCacheManager가 기본적으로 캐시 공급자로 사용됩니다. Redis 독립형 캐시를 사용하는 단계는 다음과 같습니다. 1. 캐시 종속성을 추가하기 위한 프로젝트 생성

Spring Boot 프로젝트 생성, spring-boot-starter-cache 및 Redis 종속성 추가

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
  <exclusions>
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
    </exclusion>
  </exclusions>
</dependency>
<dependency>
  <groupId>io.lettuce</groupId>
  <artifactId>lettuce-core</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
</dependency>
로그인 후 복사

2. 캐시 구성

Redis 독립형 캐시는 개발자가 Redis 구성 및 application.properties의 캐시 구성, 코드는 다음과 같습니다.

# 캐시 구성
# Redis의 키에는 접두사가 있습니다. ​​"cache name::"

spring.cache.cache-names =c1,c2
# 캐시 유효 기간, 즉 Redis
spring.cache.redis.time-to-live=1800s
# Redis 구성
spring.redis.database=0
spring.redis의 키 만료 시간을 구성합니다. 호스트=localhost
spring.redis.port=6379
spring .redis.password=123456
spring.redis.jedis.pool.max-active=8
spring.redis.jedis.pool.max-idle=8
spring. redis.jedis.pool.max-wait=-1ms
spr 애플리케이션은 동일하므로 여기서는 자세한 설명을 생략하겠습니다

4. BookDao 만들기

Book

@SpringBootApplication
@EnableCaching
public class CacheApplication {
    public static void main(String[] args) {
        SpringApplication.run(CacheApplication.class, args);
    }
}
로그인 후 복사

BookDao

public class Book implements Serializable {
    private Integer id;
    private String name;
    private String author;
    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name=&#39;" + name + &#39;\&#39;&#39; +
                ", author=&#39;" + author + &#39;\&#39;&#39; +
                &#39;}&#39;;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
}
로그인 후 복사

5. class

서비스의 메소드를 테스트하기 위한 테스트 클래스 생성

@Repository
@CacheConfig(cacheNames = "book_cache")
public class BookDao {
    @Cacheable
    public Book getBookById(Integer id) {
        System.out.println("getBookById");
        Book book = new Book();
        book.setId(id);
        book.setName("三国演义");
        book.setAuthor("罗贯中");
        return book;
    }
    @CachePut(key = "#book.id")
    public Book updateBookById(Book book) {
        System.out.println("updateBookById");
        book.setName("三国演义2");
        return book;
    }
    @CacheEvict(key = "#id")
    public void deleteBookById(Integer id) {
        System.out.println("deleteBookById");
    }
}
로그인 후 복사
Execute 이 메소드의 경우 콘솔은 다음과 같이 로그를 인쇄합니다.

deleteBookById

getBookById

deleteBookById

getBookById

b3:Book{id=1, name ='삼국지', 저자='나관중'}

updateBookById

b4:Book{id= 1, name='삼국지2', 저자='나관중'}

순서 왕복 테스트에서 캐시의 영향을 피하기 위해 먼저 삭제 작업을 수행합니다(이렇게 하면 캐시도 삭제됩니다). 그런 다음 쿼리를 실행하여 정상적으로 인쇄한 다음 인쇄하지 않고 다른 쿼리를 실행한 다음(캐시를 직접 읽음) 삭제를 실행한 다음 쿼리를 실행하고 인쇄가 정상(삭제 작업에서도 캐시를 삭제함)을 한 다음 업데이트 작업이 실행되고(캐시가 동시에 업데이트됨) 마지막으로 쿼리가 다시 수행되어 업데이트된 데이터가 인쇄됩니다.

위 내용은 SpringBoot 캐싱 메커니즘의 Redis 독립형 캐시를 적용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿