Redis는 데이터 처리 속도가 엄청 빠른 NoSQL(키 밸류를 저장하는) 데이터베이스이다.
-최대 장점은
Redis는 인메모리에 모든 데이터를 저장한다. 그래서 데이터의 처리 성능이 굉장히 빠르다.
-주요 사용 사례 중 우선 캐싱(데이터 조회 성능 향상)에 대해서 알아보자.
<명령어>
set 키 밸류
set 키 밸류 ex 만료시간(초)
get 키
keys *
del 키
ttl 키
flushall
<Redis 키 네이밍 컨벤션>
users:100:profile
-캐시란? 원본 저장소보다 빠르게 정보를 가져올 수 있는 임시 데이터 저장소이다.
-캐싱이란? 캐시(임시 데이터 저장소)에 접근해서 데이터를 빠르게 가져오는 방식이다.
“이 API는 응답 속도가 너무 느린데, 캐싱을 해두고 쓰는 게 어때?”
-데이터를 캐싱할 때 사용하는 전략
▶ 대표 전략 2가지
1.Cache Aside(= Look Aside, Lazy Loading) 전략
데이터를 요청했을 때 캐시에 데이터가 있다면(Cache Hit), 있는 데이터로 응답한다. 캐시에 데이터가 없다면(Cache Miss) 데이터베이스에 요청하고 응답한 후에 캐시에도 데이터를 저장해두고 사용한다. 즉, 캐시에서 데이터를 확인하고 없으면 데이터베이스를 통해 조회하는 전략이다.
2.Write Around 전략
데이터를 저장할 때 Redis에 저장하지 않고 데이터베이스에만 저장하는 방식이다. 그러다 데이터를 조회할 때 Redis에 데이터가 없으면 데이터베이스로부터 데이터를 조회해 와서 Redis에 저장시켜주는 방식이다. 즉, 쓰기 작업(저장, 수정, 삭제)을 캐시(Redis)에는 반영하지 않고, 데이터베이스에만 반영하는 전략이다.
위 두가지 전략을 같이 사용할 때의 단점은
데이터의 일관성을 보장할 수 없다. 캐시된 데이터와 데이터베이스가 일치하지 않을 수 있기 때문이다. 그리고 캐시에 저장할 수 있는 공간이 비교적 작다.
-Redis는 시간복잡도 O(1)이라서 엄청 빠르고, 싱글쓰레드라서 혼자 데이터를 처리하니 동시성 제어가 가능하다.
'개발 > 부트캠프' 카테고리의 다른 글
본캠프 : 동시성 제어(Concurrency Control) (0) | 2025.04.03 |
---|---|
본캠프 : 어노테이션 정리_freship project (0) | 2025.03.28 |
본캠프 : @EnableJpaAuditing (0) | 2025.03.27 |
본캠프 : methodargumentnotvalidexception (0) | 2025.03.27 |
본캠프 : 개인 과제(플러스 심화) 트러블 슈팅 (0) | 2025.03.20 |