Spring Boot 통합 redis,key 사용자 정의 생 성 방식
7258 단어 SpringBootrediskey생 성
@Configuration
현재 클래스 는 하나의 설정 클래스 에 속 하고 spring.cfg.xml 와 유사 하 다 는 것 을 나타 낸다.캐 시 사용 을 지원 합 니 다.
사용자 정의 설정 원본:
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.cache.RedisCachePrefix;
import org.springframework.data.redis.core.RedisTemplate;
import com.alibaba.fastjson.JSON;
/**
* redis
* @Configuration
* @EnableCaching
* @author ouyangjun
*/
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {
/**
* redis key
* target:
* method:
* params:
* @return KeyGenerator
* : key , , @Cacheable keyGenerator
* : @Cacheable(value = "key", keyGenerator = "cacheKeyGenerator")
*/
@Bean
public KeyGenerator cacheKeyGenerator() {
return (target, method, params) -> {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
// , hashCode , key
sb.append(JSON.toJSONString(obj).hashCode());
}
return sb.toString();
};
}
/**
* redis
* @param redisTemplate
* @return
*/
@Bean
public CacheManager cacheManager(RedisTemplate<String, Object> redisTemplate) {
RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate);
redisCacheManager.setUsePrefix(true);
// key , conf
RedisCachePrefix cachePrefix = new RedisPrefix("conf");
redisCacheManager.setCachePrefix(cachePrefix);
// key , 600
redisCacheManager.setDefaultExpiration(600L);
return redisCacheManager;
}
}
2)SpringBoot 자체 캐 시 방식설명:
4.567914.의미:이 주해 성명 을 호출 하 는 방법 은 캐 시 에서 먼저 찾 아 key 와 같은 캐 시 데이터 가 있 는 지 판단 하고 있 으 면 데 이 터 를 직접 되 돌려 줍 니 다.없 으 면 실행 방법 을 실행 한 다음 에 되 돌아 오 는 데 이 터 를 키 값 으로 캐 시 에 저장 하여 다음 에 같은 매개 변수 가 요청 할 때 캐 시 에서 데 이 터 를 되 돌려 줍 니 다.
@Cacheable 은 다음 과 같은 몇 가지 인 자 를 지원 합 니 다.
4.567914.캐 시 위치의 이름 은 비어 있 으 면 안 되 고 value 와 같은 의미 입 니 다.
@EnableCaching
캐 시 위치의 이름 은 비어 있 으 면 안 되 고 cacheNames 와 같은 의미 입 니 다.@Cacheable
캐 시 된 key 는 기본적으로 비어 있 으 며 사용 방법 을 나타 내 는 매개 변수 유형 과 매개 변수 값 을 key 로 하고 SpEL 을 지원 합 니 다.4.567914.키 의 생 성 정책 을 지정 합 니 다.
cacheNames
트리거 조건,조건 을 만족 시 키 면 캐 시 를 추가 합 니 다.기본 값 은 비어 있 습 니 다.모두 캐 시 를 추가 하고 SpEL 을 지원 합 니 다.4.567914.의미:같은 key 의 캐 시 가 존재 할 때 캐 시 를 비 우 는 것 은 삭제 하 는 것 과 같 습 니 다.
@CacheEvict 는 다음 과 같은 몇 가지 인 자 를 지원 합 니 다.
4.567914.캐 시 위치의 이름 은 비어 있 으 면 안 되 고 value 와 같은 의미 입 니 다.
value
캐 시 위치의 이름 은 비어 있 으 면 안 되 고 cacheNames 와 같은 의미 입 니 다.key
캐 시 된 key 는 기본적으로 비어 있 으 며 사용 방법 을 나타 내 는 매개 변수 유형 과 매개 변수 값 을 key 로 하고 SpEL 을 지원 합 니 다.keyGenerator
트리거 조건,조건 을 만족 시 키 면 캐 시 를 추가 합 니 다.기본 값 은 비어 있 습 니 다.모두 캐 시 를 추가 하고 SpEL 을 지원 합 니 다.condition
true 는 value 의 모든 캐 시 를 지 우 는 것 을 표시 합 니 다.기본 값 은 false 입 니 다.테스트 코드:
package hk.com.cre.process.basic.service.impl;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
public class RdisCacheTest {
/**
*
* : conf:redis: hashcode
* : @Cacheable redis string
* , key redis ,
*/
@Cacheable(cacheNames = "redis", keyGenerator = "cacheKeyGenerator")
public String getRedisString(String param1, String param2) {
return param1+":"+param2;
}
/**
*
*/
@CacheEvict(cacheNames = "redis", allEntries = true)
public String cleanCache() {
return "success";
}
}
스프링 캐 시 C KeyGenerator 사용자 정의 rediskey1.개술
이 튜 토리 얼 에서 Spring Cache 를 사용 하여 사용자 정의 키 생 성 기 를 만 드 는 방법 을 보 여 줍 니 다.
2. KeyGenerator
이것 은 캐 시 에 있 는 모든 데이터 항목 에 키 를 만 드 는 것 을 책임 집 니 다.이 키 들 은 검색 할 때 데이터 항목 을 찾 는 데 사 용 됩 니 다.
이 곳 의 기본 구현 은 SimpleKeyGenerator C 입 니 다.제공 하 는 방법 매개 변 수 를 사용 하여 키 를 만 듭 니 다.같은 캐 시 이름과 매개 변수 형식 집합 을 사용 하 는 두 가지 방법 이 있다 면 충돌 할 수 있다 는 뜻 이다.
캐 시 데 이 터 를 다른 방법 으로 덮어 쓸 수 있다 는 뜻 이기 도 하 다.
3.사용자 정의 키 생 성기
키 생 성 기 는 하나의 방법 만 이 루어 져 야 합 니 다:
Object generate(Object object, Method method, Object... params)
올 바 르 게 구현 되 거나 사용 되 지 않 으 면 캐 시 데 이 터 를 덮어 쓸 수 있 습 니 다.실현 을 살 펴 보 자.
public class CustomKeyGenerator implements KeyGenerator {
public Object generate(Object target, Method method, Object... params) {
return target.getClass().getSimpleName() + "_"
+ method.getName() + "_"
+ StringUtils.arrayToDelimitedString(params, "_");
}
}
그 후에 우 리 는 그것 을 사용 할 수 있 는 두 가지 방법 이 있다.첫 번 째 는 응용 프로그램 Config 에서 콩 을 설명 하 는 것 입 니 다.클래스 는 캐 시 설정 에서 지원 하거나 캐 시 설정 프로그램의 확장 을 실현 해 야 합 니 다.
@EnableCaching
@Configuration
public class ApplicationConfig extends CachingConfigurerSupport {
@Bean
public CacheManager cacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
Cache booksCache = new ConcurrentMapCache("books");
cacheManager.setCaches(Arrays.asList(booksCache));
return cacheManager;
}
@Bean("customKeyGenerator")
public KeyGenerator keyGenerator() {
return new CustomKeyGenerator();
}
}
두 번 째 방법 은 이 를 특정한 방법 에 사용 하 는 것 이다.
@Component
public class BookService {
@Cacheable(value = "books", keyGenerator = "customKeyGenerator")
public List<Book> getBooks() {
List<Book> books = new ArrayList<>();
books.add(new Book("The Counterfeiters", "André Gide"));
books.add(new Book("Peer Gynt and Hedda Gabler", "Henrik Ibsen"));
return books;
}
}
4.결론본 논문 에서 봄 캐 시 를 사용자 정의 하 는 키 생 성 기 를 실현 하 는 방법 을 연구 했다.
여느 때 와 마찬가지 로 예제 의 전체 소스 코드 는 4.567915 에서 찾 을 수 있다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.