-
인메모리 저장소와 Redis에 대해 파헤치기프로그래밍 언어/Spring 2024. 8. 8. 19:04
이 글은 인메모리 저장소와 Redis에 대한 공부를 제가 이해할 수 있는 내용으로 정리한 글입니다. 부정확한 서술이나 기술에 대한 정보가 틀릴 가능성이 있습니다.
인메모리 저장소의 필요성
우리는 지금까지 Spring boot를 활용하면서 데이터를 쉽게 저장할 수 있도록 관계형 데이터베이스(RDBMS)를 사용해왔습니다. 이 데이터베이스를 사용했던 가장 큰 목적은 서비스가 종료돼도 데이터를 영속적으로 남기기 위해서입니다.
하지만, 서비스를 운용하다보면 데이터베이스에 저장하는 것보다 임시 저장해야하는 상황들이 있습니다.
예를 들어, 우리가 쇼핑몰을 이용할 때 이용하는 장바구니 기능은 확정되지 않은 데이터로써 상품들을 쉽게쉽게 바뀌고 삭제됩니다. 이런 상황에서 관계형 데이터베이스에 계속해서 SQL문을 날려 저장하고 수정하고 삭제하는게 서버에 좋은 상황일까요?
이런 상황에서, 우리는 인메모리 저장소를 이용해 캐싱을 활용합니다.
여기서 캐싱이란,
파일 복사본을 캐시 또는 임시 저장 위치에 저장하여 보다 빠르게 액세스할 수 있도록 하는 프로세스
입니다.
그렇다면 왜 인메모리, 즉 RAM을 사용하여 저장할까요?
왜냐하면, RAM은 휘발성이지만 컴퓨터 저장 장치 중에서 가장 속도가 빠르기 때문입니다. 이를 지원하는 데이터베이스 서비스가 바로 Redis 입니다.
Redis란?
Redis는 REmote DIctionary Server의 준말로, Java의 Map과 같은 방식으로 데이터를 저장하는 데이터베이스입니다.
Redis는 일반적으로 지연이 적은 읽기/쓰기 성능을 가져 일시적인 데이터를 가졌습니다.
Redis의 주요 특징에 대해 알아봅시다.
- Redis는 NoSQL 데이터베이스로, 관계형 데이터 베이스의 약점인 확장성, 유연성과 성능에 장점이 있습니다.
- key-value 형태
- Document라는 단위로 데이터를 저장합니다.
- Column-family: row의 column이 고정되어 있지 않고 필요한 데이터 column을 이름, 데이터, timestamp와 함께 저장하는 형태의 데이터베이스입니다.
Redis의 활용 사례에 대해 알아봅시다.
- Session Clustering: 여러 애플리케이션 인스턴스에서 같은 세션 정보를 사용할 수 있도록 도와줌
- Caching: 자주 사용되는 데이터를 저장해두어, 데이터베이스 조회를 줄이고 전반적인 응답속도를 개선합니다.
- 다양한 자료구조를 바탕으로 리더보드, 방문수 트래킹, 좌표 기반 검색등의 기능을 쉽게 구현할 수 있게합니다.
'프로그래밍 언어 > Spring' 카테고리의 다른 글
분산 추적에 대해 파헤치기 (0) 2024.08.07 API 게이트 웨이에 대해 파헤치기 (0) 2024.08.06 정규 표현식 정리 (0) 2023.11.29 1대N, N대1, N대M 관계에 대해 알아보자 (1) 2023.11.20 Spring MVC 간단 정리 (1) 2023.11.20