1. 캐시(Cache)와 Redis의 개념
캐싱의 목적:데이터베이스(디스크)에서 데이터를 읽어오는 지연을 줄이기 위해, 자주 사용되거나 변경이 적은 데이터를 메모리(RAM)에 저장하여 응답 속도를 높이는 기술입니다 [[02:08]( • Spring 캐시(Cache)와 Redis )].
사용 사례: 공지사항, API 응답 결과, 세션 관리, 게임 리더보드 등 빈번한 조회가 발생하지만 데이터 변화는 적은 곳에 주로 사용됩니다 [[03:52]( • Spring 캐시(Cache)와 Redis )].
2. Spring Boot에서 Redis 캐시 설정 [[12:06]( • Spring 캐시(Cache)와 Redis )]
의존성 추가: `spring-boot-starter-data-redis` 하나만 추가하면 기본적인 설정 준비가 완료됩니다 [[12:41]( • Spring 캐시(Cache)와 Redis )].
RedisConfig 설정:* `RedisConnectionFactory`: Redis 서버와의 연결을 관리합니다.
`RedisTemplate`: 프로그래밍 방식으로 데이터를 직접 넣고 뺄 때 사용합니다 [[14:10]( • Spring 캐시(Cache)와 Redis )].
`CacheManager`: Spring의 캐시 어노테이션(`@Cacheable` 등)을 사용하기 위해 반드시 빈(Bean)으로 등록해야 하는 핵심 설정입니다 [[22:04]( • Spring 캐시(Cache)와 Redis )].
3. Spring 캐시 어노테이션 활용법 [[18:48]( • Spring 캐시(Cache)와 Redis )]
Spring은 AOP 방식을 통해 비즈니스 로직에 영향을 주지 않고 캐시를 적용할 수 있는 어노테이션을 제공합니다. 사용 전 메인 클래스나 설정 클래스에 `@EnableCaching`을 반드시 붙여야 합니다 [[17:56]( • Spring 캐시(Cache)와 Redis )].
`@Cacheable`:메서드 호출 전 캐시를 확인합니다. 캐시가 있으면 메서드를 실행하지 않고 값을 반환하며, 없으면 실행 후 결과를 캐시에 저장합니다 [[18:58]( • Spring 캐시(Cache)와 Redis )].
`@CachePut`:메서드를 항상 실행하고, 그 결과를 캐시에 업데이트합니다 (주로 데이터 수정 시 사용) [[19:48]( • Spring 캐시(Cache)와 Redis )].
`@CacheEvict`: 캐시에서 데이터를 삭제합니다 (데이터 삭제 시 사용) [[20:09]( • Spring 캐시(Cache)와 Redis )].
SpEL(Spring Expression Language): `#id`와 같이 파라미터를 키값으로 지정하거나, `unless = "#result == null"` 처럼 결과가 null이 아닐 때만 저장하는 조건을 걸 수 있습니다 [[23:40]( • Spring 캐시(Cache)와 Redis )].
4. 실전 팁 및 도구 [[27:54]( • Spring 캐시(Cache)와 Redis )]
직렬화(Serialization): 자바 객체를 Redis에 저장하려면 바이트 형태로 변환해야 합니다. 영상에서는 `GenericJackson2JsonRedisSerializer`를 사용하여 객체를 JSON 형태로 저장하는 방식을 추천합니다 [[22:43]( • Spring 캐시(Cache)와 Redis )].
TTL(Time To Live): 데이터가 무한히 쌓이지 않도록 5분 등 일정 시간이 지나면 자동으로 삭제되도록 설정하는 것이 중요합니다 [[33:04]( • Spring 캐시(Cache)와 Redis )].
관리 도구: Redis에 저장된 데이터를 시각적으로 확인하기 위해 'Advanced Redis Desktop Manager' 같은 GUI 툴을 사용하는 모습을 시연합니다 [[28:20]( • Spring 캐시(Cache)와 Redis )].
[챕터]
00:00 캐싱
04:39 Redis 입문
11:22 Redis 스프링 설정
14:24 RedisTemplate
17:55 스프링 Caching
27:09 스프링 Caching 데모
33:44 마무리