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

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

WBOY
WBOY앞으로
2023-06-03 12:41:50842검색

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으로 문의하시기 바랍니다. 삭제