SpringCache 분산 캐 시 구현 방법(redis 잠 금 해제 문제 회피)

간단 한 소개
spring 3.1 부터 정의
  •  org.springframework.cache.Cache
  • org.springframework.cache.CacheManager
  • 서로 다른 캐 시 기술 을 통일 합 니 다.
    또한 JCache(JSR-107)주 해 를 사용 하여 우리 의 개발 을 간소화 하 는 것 을 지원 합 니 다.
    在这里插入图片描述
    기초 개념
    在这里插入图片描述
    실전 사용
    SpringCache 통합 캐 시 개발 간소화
    상용 주해
    상용 주해
    설명 하 다.
    @CacheEvict
    캐 시 에서 데 이 터 를 삭제 하 는 동작 을 실행 합 니 다(실효 모드)
    @CachePut
    업데이트 캐 시 실행 방법 에 영향 을 주지 않 습 니 다.
    @Caching
    조합 이상 여러 조작
    @CacheConfig
    클래스 단계 에서 캐 시 를 공유 하 는 동일 한 설정
    @Cacheable
    데 이 터 를 캐 시 에 저장 하 는 동작 을 실행 합 니 다.
    방법.
    1),캐 시 기능 오픈@EnableCashing
    2)、주석 만 사용 하면 캐 시 작업 완료
    1.의존 도입
    spring-boot-starter-cache、spring-boot-starter-data-redis
    redis 와 함께 사용
    
    <!--    redis-->
    <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-redis</artifactId>
     <!--    lettuce -->
     <exclusions>
      <exclusion>
       <groupId>io.lettuce</groupId>
       <artifactId>lettuce-core</artifactId>
      </exclusion>
     </exclusions>
    </dependency>
    
    <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
    2.설정 쓰기
    프로젝트 에 config 폴 더 를 새로 만 들 고 config 클래스 를 새로 만 듭 니 다.
    在这里插入图片描述
    코드 는 다음 과 같 습 니 다:
    
    @EnableConfigurationProperties(CacheProperties.class)// configuration      
    @EnableCaching
    @Configuration
    public class MyCacheConfig {
    
     /**
      *             (        )
      * @param cacheProperties
      * @return
      */
     @Bean
     RedisCacheConfiguration redisCacheConfiguration(CacheProperties cacheProperties){
      RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
    
      config= config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()));
      config = config.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
    
      CacheProperties.Redis redisProperties = cacheProperties.getRedis();
    
      if (redisProperties.getTimeToLive() != null) {
       config = config.entryTtl(redisProperties.getTimeToLive());
      }
    
      if (redisProperties.getKeyPrefix() != null) {
       config = config.prefixCacheNameWith(redisProperties.getKeyPrefix());
      }
    
      if (!redisProperties.isCacheNullValues()) {
       config = config.disableCachingNullValues();
      }
    
      if (!redisProperties.isUseKeyPrefix()) {
       config = config.disableKeyPrefix();
      }
    
      return config;
    
     }
    }
    
    (1)、        
      CacheAutoConfiguration     RedisAutoConfiguration
                RedisCacheManager
      (2)、    redis    
      spring.cache.typeredis
    3.pom 설정 수정
    
    spring:
     cache:
     type: redis
     redis:
      #       
      time-to-live: 60000
      #        ,          ,                    
      key-prefix: CACHE_
      #       
      use-key-prefix: true
      #        ,      
      cache-null-values: true
    4.원리
    在这里插入图片描述
    
     1、                          【     (      )】
     2、@cacheable({"category"})
                   ,     ,      
             ,     ,            
     3、    
      1)、      ,      
      2)、key      :     ::SimpleKey[] (     key )
      3)、   value  。    jdk     ,          redis
      4)、   ttl    -1 (    )
    
    
         :
      1)、          key: key    ,    SpEL
       SpEL(    )
      2)、            :        ttl
      3)、       json   :
            RedisCacheConfiguration  
    실효 모드:@CacheEvict
    원리:캐 시 를 변경 할 때 redis 의 캐 시 를 삭제 합 니 다.
    (다음 검색 시 캐 시 를 다시 불 러 옵 니 다)
    在这里插入图片描述
    추천 사용@CacheEvict
    여러 캐 시 작업 을 동시에 진행 합 니 다.@Caching 은 파 티 션 의 모든 데 이 터 를 삭제 할 것 을 지정 합 니 다.
    @CacheEvict(value="category",allEntries=true)는 통 일 된 형식의 데 이 터 를 저장 하고 같은 파 티 션 으로 지정 할 수 있 습 니 다.파 티 션 이름 은 기본적으로 캐 시 접두사 입 니 다.
    클래스 에서 사용:@CacheEvict(value="category",allEntries=true)
    설정 에서 사용:(접두사+기본 접두사 사용 하지 않 음)
    spring.cache.redis.use-key-prefix=true
    在这里插入图片描述
    더 블 쓰기 모드:@CachePut
    원리:캐 시 를 변경 할 때 기 존 캐 시 를 삭제 하고 새 데 이 터 를 캐 시 에 다시 삽입 합 니 다.
    SpringCache 분포 식 캐 시(redis 잠 금 해제 문제 회피)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 SpringCache 분포 식 캐 시 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기