<기존>
- Redis를 default config로 사용하면서 해당 Cache의 경우 다음과 같이 key를 정의하도록 keyGenerator를 구현하였다.
1번유형 ) String customKey = target.getClass().getSimpleName() + "_"+ method.getName();
customKey += buildKey(params[0]);
2번유형 ) 별도의 Key지정 없음
- Redis내에 생성된 key값을 확인하면 다음과 같다.
1번유형 ) {methodName}::{customKey}
2번유형 ) {methodName}::SimpleKey [{argements}]
<Try>
- prefixKeysWith("Service Name")를 사용하여 공통 Prefix를 추가하는 것
- 의도한 결과는 기존의 Cache Name앞에 prefix를 추가하는 것이었다
- 기대값
1번유형 ) Service Name + methodName::{customKey}
2번유형 ) Service Name + {methodName}::SimpleKey [{argements}]
- 그러나 실제 결과는 다음과 같았다.
1번유형 ) ServiceName{customKey}
2번유형 ) ServiceNameSimpleKey [{arguments}]
기존의 cache name이 사라지고 prefix부분만 남게되는것
<원인>
- 비슷한 이슈를 제기하신분들이 기존에 있습니다.
https://github.com/spring-projects/spring-data-redis/issues/1614
https://github.com/spring-projects/spring-data-redis/issues/1548
return this.computePrefixWith((cacheName) -> {
return prefix;
});
소스를 살펴보면 다음과 같습니다. cacheName을 날려버립니다...
<결론>
그냥 자체적으로 cache name을 생성하는 로직을 만들어서 사용하도록 하였습니다..
'Java' 카테고리의 다른 글
Spring JPA, SecurityContext사용시 ThreadLocal 사용범위 관련 #2 (0) | 2021.09.15 |
---|---|
Spring JPA, SecurityContext사용시 ThreadLocal 사용범위 관련 #1 (0) | 2021.09.10 |
Spring WebClient 사용 #1 (0) | 2021.05.11 |
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException (0) | 2021.05.07 |
Spring Security + MySQL 사용시 로그인 대소문자 구분 주의사항 (0) | 2019.09.11 |