Just Do IT!
Redis란 무엇인가? 본문
728x90
반응형
Remote Dictionary Server의 약자로,
빠른 오픈 소스 인 메모리 키 값 데이터 구조 스토어이다.
키(key) - 값(value) 쌍의 해시 맵과 같은 구조를 가진 비관계형(NoSQL) 데이터베이스 관리 시스템(DBMS)이며,
오픈 소스 기반으로 인-메모리 데이터 구조 저장소로 메모리에 데이터를 저장한다.
기존 DB가 있는데 Redis를 왜 사용하는가?
DB는 매번 디스크에 접근해야 하기 때문에 사용자가 많아질수록 부하가 많아져서 느려질 수 있어 캐시 서버를 도입하여 사용하는 것이 좋다. 이 캐시 서버로 이용할 수 있는 것이 바로 Redis이다.
같은 요청이 여러 번 들어올 때 Redis를 사용함으로써 매번 DB를 거치지 않고 캐시 서버에서 저장했던 값을 바로 가져와 DB의 부하를 줄이고 서비스의 속도도 느려지지 않게 할 수 있다.
Redis의 특징
유연한 데이터 구조
- String, List, Set, Hash, Sorted Set, Bitmap, JSON 등 다양한 데이터 타입을 지원한다.
- 애플리케이션의 요구 사항에 알맞은 데이터 타입을 활용할 수 있다.
성능
- 메모리에 저장되어 대기 시간을 낮추고 처리량을 높이며, 평균적으로 읽기 및 쓰기 작업 속도가 1ms로 디스크 기반 데이터베이스보다 빠르다
개발 용이성
- 쿼리문이 필요하지 안흥며 단순한 명령 구조로 데이터의 저장, 조회 등이 가능하다.
- Java, Python, C, C++, C#, Javascript, PHP, Node.js, Ruby 등 다수의 언어를 지원한다.
영속성
- 영속성을 보장하기 위해 데이터를 디스크에 저장할 수 있다.
- 서버에 치명적인 문제가 발생하더라도 디스크에 저장된 데이터를 통해 복구가 가능하다.
싱글 스레드 방식
- 싱글 스레드 방식을 사용하여 한 번에 하나의 명령어만을 처리하기 때문에 원산을 원자적으로 처리하며 Race Condition(경쟁 상태)가 거의 발생하지 않는다.
- 멀티 스래드를 지원하지 않기 때문에 시간 복잡도가 O(n)인 명령어의 사용은 주의해서 사용해야 한다.
Redis를 사용할 때 주의할 점
- 서버에 장애가 발생했을 경우 그에 대한 운영 플랜이 꼭 필요하다.
- 인메모리 데이터 저장소의 특성 상 서버에 장애가 발생했을 경우 데이터 유실이 발생할 수 있기 때문
- 메모리 관리가 중요하다.
- 싱글 스레드의 특성 상 한 번에 하나의 명령만 처리할 수 있으므로 처리하는데 시간이 오래 걸리는 요청, 명령은 피해야 한다.
프로젝트에서 redis를 사용하는데 잘 몰라서 다른 블로그들 참고해서 정리해보았다.
spring에서 적용하는 방법은 조금 더 공부해본 다음에 올릴 예정이다.
+ 사실은 작성하고도 아직 헷갈리는 부분이 많아서 더 공부해야 겠다.
참고 블로그
728x90
'CS 정리' 카테고리의 다른 글
Http method 중 GET과 POST의 차이 (0) | 2023.12.11 |
---|---|
브라우저 저장소의 차이점 (local storage, session storage, cookie) (0) | 2023.03.31 |
캐시(Cache)의 장단점 (0) | 2023.03.29 |
프레임워크(Framework)와 라이브러리(Library)의 차이 (0) | 2023.03.29 |
[네트워크] REST / REST API / RESTful 이란? (0) | 2023.03.27 |