Just Do IT!

Redis란 무엇인가? 본문

CS 정리

Redis란 무엇인가?

MOON달 2024. 11. 7. 15:54
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에서 적용하는 방법은 조금 더 공부해본 다음에 올릴 예정이다.

 

+ 사실은 작성하고도 아직 헷갈리는 부분이 많아서 더 공부해야 겠다.

 

 

 

참고 블로그

https://velog.io/@wnguswn7/Redis%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C-Redis%EC%9D%98-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%82%AC%EC%9A%A9-%EC%8B%9C-%EC%A3%BC%EC%9D%98%EC%A0%90

https://stormstudy.tistory.com/50 

728x90