Computer Science/Cache

Redis란

dayeon.O_O.dev 2022. 6. 27. 13:05

Redis란

Redis

  • 한줄 요약: “Redis는 고성능 키-값 저장소로, String, list, hash, set, sorted set 등의 자료구조를 지원하는 NoSQL”
  • Remote Dicionary Server의 약자로 외부에서 사용 가능한 Key-Value 쌍의 해시 맵 형태의 서버라고 생각할 수 있음
  • ⇒ 별도의 쿼리 없이 Key를 통해 빠르게 결과를 가져올 수 있음 (Redis >> MySQL, Oracle)
  • 오픈소스로서 NoSQL로 분류되기도 하고, Memcached와 같이 인 메모리 솔루션으로 분류되기도 함
  • ⇒ 디스크에 데이터를 쓰는 구조가 아닌 메모리에서 데이터를 처리하기 때문에 작업 속도 빠름
  • 성능은 Memcached에 버금가며 다양한 데이터 구조체를 지원함으로 DB, Cache, Messsage Queue, Shared Memory 용도로 사용될 수 있음

Redis 특징

  • 영속성을 지원하는 인 메모리 데이터 저장소
  • 다양한 자료 구조 지원
  • 싱글 스레드 방식으로 인해 연산을 원자적으로 수행 가능
  • 읽기 성능 증대를 위한 서버 측 리플리케이션 지원
  • 쓰기 성능 증대를 위한 클라이언트 측 샤딩 지원
  • 다양한 서비스에서 사용되며 검증된 기술

Redis의 영속성

영속성(永續性): 오래 계속되는 성질

Redis는 영속성을 보장하기 위해 데이터를 디스크에 저장할 수 있음. 서버가 내려가더라도 디스크에 저장된 데이터를 읽어 메모리에 로딩. 데이터를 디스크에 저장하는 방식은 크게 두가지 존재

  • RDB(Snapshotting) 방식
  • : 순간적으로 메모리에 있는 내용 전체를 디스크에 옮겨 담는 방식
  • AOF(Append On File) 방식
  • : Redis의 모든 write/update 연산 자체를 모두 log 파일에 기록하는 형태

Redis의 컬렉션

  • 이러한 Redis의 구조체(데이터를 메모리에 저장한 빠른 DB, Memcached처럼 단순 Key-Value 쌍이 아닌 다양한 구조체)를 컬렉션이라고 부름
  • 이렇게 다양한 자료 구조 지원으로 개발 편의성↑ 난이도↓

싱글 스레드 사용 Redis

  • Redis는 싱글 스레드를 사용하므로 원자적으로 처리하여 Race Condition이 거의 발생하지 않음
  • Race Condition공용 데이터에 대한 접근이 어떤 순서로 이루어졌는지에 따라 그 실행 결과가 같지 않고 달라지는 상황
  • 간단히 말하면 “경쟁하는 상태”
  • 두 개 이상의 프로세스가 공통 자원을 병행적으로 읽기/쓰기 동작을 할 때,