SpringBoot 2 는 EHcache 구성 요 소 를 통합 하여 경량급 캐 시 관 리 를 실현 합 니 다.

1.Ehcache 캐 시 프로필
Hibernate 캐 시
Hibernate 3 급 캐 시 메커니즘 안내:
1 급 캐 시:Session 단계 에 따라 캐 시 공간 을 할당 하고 캐 시 에 접근 하 는 대상 정보 입 니 다.Session 이 닫 히 면 자동 으로 캐 시 를 지 웁 니 다.
2 급 캐 시:Session Factory 대상 캐 시 입 니 다.여러 개의 Session 대상 이 공유 할 수 있 습 니 다.2 급 캐 시 는 기본적으로 닫 혀 있 습 니 다.수 동 으로 켜 야 하고 EhCache 구성 요소 에 의존 합 니 다.
3 급 캐 시:캐 시 를 조회 하고 이 캐 시 를 여 는 상황 에서 sql 을 반복 해서 사용 하여 특정한 범위 의 데 이 터 를 조회 하면 캐 시 를 진행 합 니 다.
EHCache 캐 시 특징
  • 빠 르 고 간단 하 며 다양한 캐 시 정책 을 제공 합 니 다.
  • 캐 시 데 이 터 는 두 단계 가 있 습 니 다.메모리 와 디스크 입 니 다.용량 문 제 를 걱정 할 필요 가 없습니다.
  • 캐 시 데 이 터 는 가상 컴퓨터 가 다시 시작 하 는 과정 에서 디스크 에 기 록 됩 니 다.
  • RMI,API 삽입 등 을 통 해 분포 식 캐 시 를 할 수 있다.
  • 캐 시 와 캐 시 관리자 의 검색 인터페이스 가 있 습 니 다.
  • 다 중 캐 시 관리자 인 스 턴 스 와 하나의 인 스 턴 스 의 여러 캐 시 영역 을 지원 합 니 다.
  • Hibernate 캐 시 를 제공 합 니 다.
  • 레 디 스 캐 시 대비
    Ehcache:Jvm 가상 컴퓨터 에 직접 캐 시 되 어 속도 가 빠 르 고 효율 이 높 으 며 대규모 캐 시 데 이 터 를 처리 하기에 적합 하지 않 습 니 다.분포 식 환경 에서 캐 시 데이터 공유 작업 이 복잡 합 니 다.
    Redis:독립 된 캐 시 미들웨어 로 분포 식 캐 시 시스템 에서 매우 좋 습 니 다.캐 시 데이터 공유,대량의 데이터 캐 시 를 효과적으로 지탱 하고 보초병 모드 를 지원 하거나 클 러 스 터 모드 의 높 은 성숙 방안 을 사용 할 수 있 습 니 다.
    2.통합 SpringBoot 프레임 워 크
    1.핵심 의존
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
    <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache</artifactId>
    </dependency>
    2.로 딩 설정
    기본 설정
    
    spring:
      cache:
        ehcache:
          config: classpath:ehcache.xml
    시작 클래스 설명
    
    @EnableCaching
    @SpringBootApplication
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class,args) ;
        }
    }
    3.설정 설명
    
    <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
    
        <!--            ,          -->
        <diskStore path="java.io.tmpdir"/>
    
        <defaultCache
                maxElementsInMemory="1000"
                eternal="false"
                timeToIdleSeconds="120"
                timeToLiveSeconds="120"
                maxElementsOnDisk="10000000"
                diskExpiryThreadIntervalSeconds="120"
                memoryStoreEvictionPolicy="LRU">
            <persistence strategy="localTempSwap"/>
        </defaultCache>
    
        <cache name="userEntity"
               maxElementsInMemory="1000"
               eternal="false"
               timeToIdleSeconds="120"
               timeToLiveSeconds="120"
               maxElementsOnDisk="10000000"
               diskExpiryThreadIntervalSeconds="120"
               memoryStoreEvictionPolicy="LRU">
            <persistence strategy="localTempSwap"/>
        </cache>
    </ehcache>
    설정 매개 변수 설명
  • maxElementsOnDisk:디스크 캐 시 에 저장 할 수 있 는 요소 의 수량;
  • eternal:캐 시 대상 이 영구적 으로 유효 합 니까?
  • timeToIdle Seconds:eternal=false 에 사용 할 때 캐 시 데이터 유효기간(단위:초),시간 대 에 이 요소 에 접근 하지 않 으 면 삭 제 됩 니 다.
  • timeToLive Seconds:캐 시 데이터 의 생존 시간;
  • maxElementsInMemory:메모리 에 가장 많이 저장 할 수 있 는 요소 의 수량,overflow ToDisk=true 는 캐 시 에 있 는 더 많은 요 소 를 디스크 파일 에 넣 습 니 다.overflow ToDisk=false 는 memory StoreEvictionPolicy 정책 에 따라 캐 시 에 있 는 요 소 를 교체 합 니 다.
  • diskExpiry ThreadIntervalSeconds:디스크 캐 시 청소 스 레 드 실행 간격;
  • memory StoreEvictionPolicy:캐 시 방출 정책,LRU 는 최소 사용 한 캐 시 를 우선 청소 합 니 다.
  • localTempSwap:지속 적 인 정책 입 니 다.메모리 나 비 메모리 에 있 는 요소 가 가득 찼 을 때 그 중의 요 소 를 디스크 에 임시로 저장 하고 다시 시작 하면 사라 집 니 다.
  • 주해 용법
    
    @Service
    public class CacheService {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(CacheService.class);
    
        @Resource
        private UserMapper userMapper ;
    
        @Cacheable(value="userEntity")  //        ,          
        public UserEntity getById (Integer id){
            //     ,        
            LOGGER.info("getById..."+id);
            return userMapper.selectById(id) ;
        }
    
        @CacheEvict(value="userEntity",key = "#id") // ID    ,   ID  
        public void updateUser(Integer id) {
            UserEntity user = new UserEntity() ;
            user.setId(id);
            user.setUserName("myCache");
            userMapper.updateById(user);
        }
    }
    @Cacheable:주석 표 시 는 한 가지 방법 에 도 표시 할 수 있 고 한 가지 방법 에 표시 할 수 있 습 니 다.이 방법 은 캐 시 를 지원 합 니 다.이 방법 이 호출 된 후에 값 을 캐 시 합 니 다.다음 에 같은 요청 매개 변 수 를 실행 할 때 캐 시 에서 결 과 를 직접 얻 을 수 있 습 니 다.다시 실행 하지 않 아 도 됩 니 다.
    @CacheEvict:캐 시 요 소 를 제거 해 야 하 는 방법 이나 클래스 에 주석 을 표시 합 니 다.한 클래스 에 표 시 될 때 모든 방법 이 실행 되면 캐 시 제거 작업 을 촉발 하고 지정 한 속성 에 따라 제거 할 수 있 습 니 다.
    소스 코드 주소
    GitHub/주소
    https://github.com/cicadasmile/middle-ware-parent
    GitEE/주소
    https://gitee.com/cicadasmile/middle-ware-parent
    이상 은 SpringBoot 2 가 Ehcache 구성 요 소 를 통합 하여 경량급 캐 시 관 리 를 실현 하 는 상세 한 내용 입 니 다.SpringBoot 2 가 Ehcache 구성 요 소 를 통합 하 는 것 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

    좋은 웹페이지 즐겨찾기