데이터가 바뀌면 캐시도 갱신/삭제해야 하는데 어떻게 할 것인가에 대한 문제.
방법 2가지 :
@CacheEvict가 이 역할. 정확하지만, "이 데이터 바뀌면 어떤 캐시들을 지워야 하지?"를 개발자가 다 챙겨야 해서 실수하기 쉬움.다중 서버라도 Redis는 공유라서 한 앱이 @CacheEvict로 지우면 모두에게 반영돼요. 이게 Caffeine 대비 Redis의 큰 장점
Redis는 문자열/바이트를 저장하는 저장소라, Java 객체(DTO등)를 넣으려면 직렬화(객체 → 저장 가능한 형태로 변환)가 필요함.
하지만 Java에 내장된 기본 JDK 직렬화 방식으로 직렬화 할 경우 사람이 못 읽는 바이너리 값으로 저장이 됨.
그래서 보통은 객체는 JSON으로 직렬화해서 Redis에 저장하는게 표준. RedisCacheConfiguration에서 직렬화 설정하는 부분에서 설정 가능.