NCache 스프링 데이터 캐시로

NCache인메모리의 매우 빠르고 확장 가능한 분산 캐시인 는 Spring과의 통합을 제공하여 비용이 많이 드는 데이터 이동을 줄여 애플리케이션 성능을 향상시킵니다.

Spring은 Java용 경량 종속성 주입 및 측면 지향 개발 컨테이너 및 프레임워크입니다. 이를 통해 애플리케이션 개발을 단순화하고 다음과 같은 재사용 가능한 부분을 애플리케이션에 연결할 수 있습니다. NCache.

 

Spring 애플리케이션을 다음과 통합해야 하는 이유 NCache?

Spring 자체는 응집력과 느슨한 결합을 제공하여 Java 개발의 전반적인 복잡성을 줄이지만 이러한 애플리케이션에서 높은 트래픽을 생성합니다. 이러한 트래픽이 많은 Spring 애플리케이션은 심각한 확장성 문제에 직면해 있습니다. 따라서 확장성 요구 사항을 충족하는 인메모리 분산 캐시가 중요합니다.

이러한 애플리케이션은 서버 팜에 더 많은 서버를 추가하여 확장할 수 있지만 안타깝게도 데이터베이스는 이렇게 높은 로드를 처리할 만큼 확장할 수 없습니다. 이러한 시나리오에서는 분산 캐시가 데이터베이스 처리에 가장 적합합니다. 확장 성 문제가 발생했습니다.

따라서 최선의 선택은 NCache. 이는 속도가 빠르고 메모리 내에서 키-값 저장소 Spring 캐싱 모듈을 구현하여 Spring 애플리케이션을 확장 가능하고 분산되게 만드는 분산 캐시입니다. 확장성 문제를 일으키는 값비싼 데이터베이스 이동을 줄여 데이터베이스의 부담을 덜어주고 더 빠른 성능을 제공합니다.

 

사용할 Spring 애플리케이션을 구성하는 방법 NCache

NCache 다음 두 가지 방법으로 Spring 캐싱 지원을 제공합니다.

  • 통해 스프링 캐싱 공급자, NCache Spring 애플리케이션의 캐시 관리자 역할을 합니다.
  • 통해 JCache 캐싱 공급자, NCache JCache의 지원되는 기능을 사용합니다.
 

종속성 추가

Spring 애플리케이션을 구성하려면 먼저 Spring 및 Spring에 필요한 모든 Maven 종속성을 추가해야 합니다. NCache 제공하십시오.

<dependency>
    <groupId>com.alachisoft.ncache</groupId>
    <artifactId>ncache-spring</artifactId>
    <version>x.x.x</version>
</dependency>
 

Spring 캐싱 공급자를 통해 Spring 애플리케이션 구성

이러한 종속성을 추가한 후 Java 기반 또는 XML 기반 Bean 정의를 통해 Spring 애플리케이션에서 Bean을 정의하세요.

Java 기반 Bean 정의:
Java 기반 정의를 사용하여 Bean을 정의하려면 다음을 추가해야 합니다. @콩 CachingConfiguration 클래스의 주석. 여기서 setConfigFile 메소드는 경로를 지정합니다. ncache-spring.xml 파일. 자세한 내용은 다음을 참조하십시오. Java 기반 Bean 정의.

@Configuration
class CachingConfiguration {
    @Bean
    public CacheManager cacheManager() {
        String resource = Path.of(System.getenv("NCHOME"), "config/ncache-spring.xml").toString();

        SpringConfigurationManager springConfigurationManager = new SpringConfigurationManager();
        springConfigurationManager.setConfigFile(resource);

        NCacheCacheManager cacheManager = new NCacheCacheManager();
        cacheManager.setSpringConfigurationManager(springConfigurationManager);

        return cacheManager;
    }
}

XML 기반 빈 정의:
XML 기반 정의를 사용하여 Bean을 정의하려면 캐싱을 활성화하고 다음을 지정하는 XML 파일을 추가해야 합니다. NCache 캐시 관리자로서. 캐시 관리자와 캐시 관리자 모두에 대해 Bean 태그를 정의해야 합니다. NCache구성 관리자. 또한 캐시 관리자에 대해 다음 속성을 지정해야 합니다.

  • springConfigurationManager: 참조 NCache 구성 관리자 빈.
  • 로그파일 경로: 캐시 관리자 로그의 완전한 경로입니다.
<bean id="cacheManager" class="com.alachisoft.integrations.spring.NCacheCacheManager">
	<property name="springConfigurationManager" ref="NCacheConfigurationManager"/>
	<property name="logFilePath" value=" C:\Program Files\NCache\log-files\CustomerDBSpringLogs"/>
</bean>
<bean id="NCacheConfigurationManager" class="com.alachisoft.integrations.spring.configuration.SpringConfigurationManager">
        <property name="configFile" value="ncache-spring.xml">
</bean>

자세한 내용은 XML 기반 Bean 정의.

또한 다음에서 캐시를 구성해야 합니다. ncache-spring.xml 파일 NCache 관리 센터. 각 캐시에는 이 파일에 고유한 속성 집합이 포함된 고유한 정의가 필요합니다. 예를 들어:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application-config default-cache-name="books">
  <caches>
    <cache name="books" ncacheid-instance="democache" priority="normal" expiration-type="absolute" expiration-period="300"/>
  </caches>
</application-config>
 

JCache 캐싱 공급자를 통해 Spring 애플리케이션 구성

Spring은 또한 Spring 애플리케이션에서 JCache를 사용할 수 있는 JCache 호환 캐싱 제공자를 지원합니다. NCache. 먼저 Spring용 Maven 종속성을 추가합니다. NCache및 JCache. 종속성을 추가한 후 캐시를 구성합니다.

  • 추가 spring.cache.cache 이름 ~에있는 태그 응용 프로그램 속성 파일. 캐시 이름은 NCache 관리 센터.
  • 다음을 통해 캐시를 구성하십시오. JCacheManagerCustomizer 원하는 구성으로 런타임에 캐시를 초기화하는 클래스입니다.

자세한 내용은 JCache 스프링 문서.

 

캐시에 필요한 방법 식별

위에 정의된 두 구성을 모두 통해 캐싱을 활성화하면 다음 단계는 이러한 캐싱 동작을 사용할 해당 메서드에 바인딩하는 것입니다. NCache Spring용 캐싱 제공자로서.

두 가지 방법으로 캐싱 동작을 해당 메서드에 바인딩할 수 있습니다. 하나는 끝났어 캐싱 주석.

// BookController.java
@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired
    // Get a Spring Service to save objects in the DB. This also caches them with 5min absolute (TTL) expiration.
    BookService service = context.getBean(BookService.class);
    service.save(new Book(18001, "The Second Machine Age", "Erik Brynjolfsson, Andrew McAfee", new Date(2014, 0, 20)));

    // Print all saved books details
    printBooks(service.listAll());

    // Use Spring Service to get a book from the DB. It actually comes from the cache
    Book foundBook = service.findBookByIsbn(18001);
    printBookDetails(foundBook);

    foundBook.setAuthor("New Author");
    Book UpdatedBook = service.update(foundBook);

    printBookDetails(UpdatedBook);
    context.close();
    System.exit(0);
    }

// BookService.java
@Service
class BookService {
    @Autowired
    private BookRepository repo;

    public List<Book> listAll() {
        return repo.findAll();
    }

    @CachePut(value = "demoCache", key = "#book.getISBN()")
    public Book save(Book book) { return repo.save(book); }

    @CachePut(value = "demoCache", key = "#book.getISBN()")
    public Book update(Book book) { return repo.save(book); }

    @Cacheable(value = "demoCache", key = "#id")
    public Book get(int id) {
        return repo.findById(id);
    }

    @Cacheable(value = "demoCache", key = "#isbn")
    public Book findBookByIsbn(long isbn) {
        return repo.findBookByIsbn(isbn);
    }

    @CacheEvict(value = "demoCache", allEntries = true)
    public void delete(int id) {
        repo.deleteById(id);
    }
}

주석을 사용하지 않으면 선언적 XML 기반 캐싱 외부에서 대상 메서드 및 캐싱 지시문을 지정할 수 있는 곳에서 사용할 수 있습니다.

<!-- the service we want to make cacheable -->
<bean id="bookService" class="x.y.service.BookService"/>
<!-- cache definitions -->
<cache:advice id="booksCacheAdvice" cache-manager="cacheManager">
    <cache:caching cache="demoCache">
        <cache:cacheable method="getBookNameByIsbn" key="#isbn"/>
        <cache:cache-evict method="loadBooks" all-entries="true"/>
    </cache:caching>
</cache:advice>

다음에 무엇을할지?

© 저작권 Alachisoft 2002 - . 판권 소유. NCache 는 Diyatech Corp.의 등록상표입니다.