Redis

민선규·2023년 2월 24일

데이터베이스

목록 보기
8/11
post-thumbnail

Redis

먼저 레디스를 알아보자면 레디스는 Remote Dictionary Server의 약자로서, "키-값" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템이다.

Redis를 사용하는 이유

데이터를 저장하고 관리하는 데이터베이스가 존재하는데 인메모리 데이터인 Redis를 사용하는 이유가 무엇일까?

먼저 데이터베이스의 이점을 알아보자면 데이터를 물리 디스크에 직접 쓰이기 때문에 서버에 문제가 생겨도 데이터의 손실이 일어나지 않는다. 하지만 매번 디스크에 접근을 해야하므로 이용자가 많아지면 서버에 부하가 많아질 수 있다.

그래서 이러한 점을 예방하기 위해서 캐시 서버를 도입을 하였다. 캐시란 자주사용하는 데이터를 미리 복사해 놓은 저장소를 말한다. Redis가 바로 캐시를 사용을 한다.

캐시 서버 패턴

  • Look aside cache
  1. 클라이언트가 데이터를 요청한다.
  2. 웹서버는 데이터가 존재하는지 Cache 서버에 먼저 확인한다.
  3. Cache 서버에 데이터가 있으면 DB에 데이터를 조회하지 않고 Cache 서버에 있는 결과값을 클라이언트에게 바로 반환한다. (Cache Hit)
  4. Cache 서버에 데이터가 없으면 DB에 데이터를 조회하여 Cache 서버에 저장하고 결과값을 클라이언트에게 반환한다. (Cache Miss)
  • Write Back
  1. 웹서버는 모든 데이터를 Cache 서버에 저장한다.
  2. Cache 서버에 특정 시간 동안 데이터가 저장된다.
  3. Cache 서버에 있는 데이터를 DB에 저장한다.
  4. DB에 저장된 Cache 서버의 데이터를 삭제한다.

Redis, Memcached

MemcachedRedis
1ms 이하의 지연시간OO
개발의 용이성OO
데이터 파티셔닝OO
다양한 프로그래밍 언어 지원OO
다양한 데이터 타입O
멀티 스레드O
스냅샷O
데이터 복제O
트랜잭션 지원O
발행/구독O
루아 스크립트 지원O
위치기반 데이터 타입 지원O

위에 설명한 캐시 서버에는 Redis 외에 Memcached가 있다. 서로의 차이를 표로 정리를 해 보았다. 프로젝트에서는 멀티 스레드를 사용할 계획이 없어서 그 외에 많은 기능들을 지원하는 Redis를 사용해 보았다.

Redis 특징

  • Key, Value 구조이기 때문에 쿼리를 사용할 필요가 없다.
  • 데이터를 디스크에 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 속도가 빠르다.
  • String, Lists, Sets, Sorted Sets, Hashes 자료 구조를 지원한다.
  • 싱글 스레드이다.

Redis 사용에 주의할 점

  • 서버에 장애가 발생했을 경우 그에 대한 운영 플랜이 꼭 필요하다.
    : 인메모리 데이터 저장소의 특성상, 서버에 장애가 발생했을 경우 데이터 유실이 발생할 수 있기 때문이다.
  • 메모리 관리가 중요하다.
  • 싱글 스레드의 특성상, 한 번에 하나의 명령만 처리할 수 있습니다. 처리하는데 시간이 오래 걸리는 요청, 명령은 피해야 한다.

Redis 활용 사례

  • I/O가 많이 발생하는 데이터를 처리 할 때
  • 사용자의 세션 관리
  • API 캐싱
  • IOT 영역

Redis를 학습하면서 NoSQL도 다음에 학습을 해보려고 한다.

참고 문서 및 링크

0개의 댓글