Spring/Redis

🎯 Cache 란 무엇일까?Cache (캐시) 데이터는 이미 한번 처리한 데이터를 임시 저장소에 저장하는 데이터 입니다. 이 데이터들은 다른 요청이 들어 왔을때 이미 임시저장소에 저장되어 있던 정보를 응답해 돌려주기 때문에 속도측면에서 매우 유리합니다. 그렇다면 내부적으로 어떻게 동작할까? 일반적으로 캐시는 메모리(RAM) 을 사용하기 때문에 데이터베이스 보다 훨씬 빠르게 데이터를 응답 할 수 있습니다. 하지만 RAM 은 기본적으로 용량이 적기 때문에 데이터를 모두 캐시에 저장해버리면 용량이 부족한 상황을 마주할 수 있습니다. 그렇기 때문에 우리는 어떤 종류의 데이터를 캐시에 저장할지 판단할 수 있어야하고, 이러한 판단을 하기 위한 척도인 지침 전략을 숙지할 필요가 있습니다. 🎯 캐싱 전략 패턴 종류..
🎯 왜? Jwt 를 Redis 에서 관리할까? 기존에 Jwt 를 이용해 구현한 인증 기능에서 RefreshToken 을 사용자 DB 에 넣어 관리했습니다. 하지만 보안성을 높이기 위해 RefreshToken 재발급 주기를 짧게 하고 싶었지만 DB 에 보내는 쿼리가 많아져 서비스가 커지면 분명히 성능적으로 문제가 생길거라 생각했습니다. 때문에 다음과 같은 이유로 Jwt 를 Redis 에서 관리하게끔 변경했습니다. 1. Jwt 는 자주 엑세스 되는 데이터이기 때문에 캐싱을 활용하면 시스템 성능을 높일 수 있다 판단.2. 자주 엑세스 되는 데이터인 만큼 빠른 속도가 중요하기에 In-Memory 기반의 Redis 에 저장.3. Jwt 뿐만 아니라 Jwt 인증시 필요한 사용자 정보도 Redis에서 관리하면 DB..
🎯 캐싱 추상화 스프링에서는 메서드에 캐시를 적용할 수 있는 애노테이션을 제공합니다. 이는 AOP 방식으로 제공해 캐싱 관련 설정만 등록해준다면 매우 쉽게 캐싱 기능을 사용할 수 있습니다. 이를 통해 핵심 비지니스 로직을 분리할 수 있어 높은 확장성을 가지고 있습니다.  또한 Spring 에서 제공하는 캐시 기능은 추상화되어 있기에 환경이 바뀌거나 캐시 관련 기능이 변경되어도 애플리케이션 코드에 영향을 주지 않습니다. 그렇다면 Spring 에서 제공하는 캐싱 관련 애노테이션은 무엇이 있을까?  캐시 데이터를 저장과 조회를 동시에 하는 @Cacheable 캐시 데이터를 저장하는 @CachePut 캐시 데이터를 삭제하는 @CacheEvict  크게 3개 정도의 애노테이션을 이용해 @AOP 를 적용하듯이 애..
신민석
'Spring/Redis' 카테고리의 글 목록