Computer Science/테크톡 정리

[CS 정리] Redis 정리

미스터로즈 2021. 9. 23. 07:56

우아한 테크톡 관련된 유튜브 강의 정리 내용입니다.

정확한 내용을 학습하고 싶으면 강의 링크를 참고하시면 됩니다.


Redis 

Remote → 외부

dictionary → HashMap Key-Value 형태

server → 서버

 

메모리 기반의 키-값 구조 데이터 관리 시스템이며,

모든 데이터를 메모리에 저장하고 조회하기에 빠른 Read, Write 속도를 보장하는 비 관계형 데이터베이스이다.

 

Cache

나중의 요청에 대한 결과를 미리 저장했다가 빠르게 사용하는 것

 

In-memory Database(Cache)

Database보다 더 빠른 Memory에 더 자주 접근하고 덜 자주 바뀌는 데이터를 저장합니다.

 


Data Structure(데이터 형식)

Redis Collection

  • String
  • List
  • Set
  • Sorted Set
  • Hash

Java - Redis

서버가 여러대인 경우 Consistency의 문제가 발생할 수 있습니다.

Multi-Threaded 환경에서 Race Condition

 

Race Condition

Race Condition 이란 여러 개의 Thread가 경합하는 것입니다.

Context Switching에 따라 원하지 않는 결과가 발생합니다.

 

Race Condition 해결 방법으로

Redis는 기본적으로 Single Threaded 로 하고

Redis 자료구조는 Atomic Critical Section에 대한 동기화를 제공합니다.

또한 서로 다른 Transaction Read/Write를 동기화 합니다.

 

주의해야 할 점

Single Thread 서버 이므로 시간 복잡도를 고려해야 합니다.

In-memory 특성상 메모리 파편화, 가상 메모리 등의 이해가 필요합니다.

 

Single Threaded

  • Event Driven (비 동기)
  • IO-bound Process
  • Context Switching의 효율이 적다
  • Single Threaded

 

Memory 관리

  • 메모리 파편화
  • 가상메모리 Swap
  • Replication - Fork

 

메모리 파편화

메모리 페이지 사이즈가 4096 일때, 우리가 1byte 만 달라고 요청하더라도 실제로 jemalloc 은 4096 byte 를 가져와야한다. jemalloc  메모리를 페이지 단위로 반환하기 때문이다.

 

추가적으로

Redis를 저장소 처럼 → Redis Persistent , RDB, AOF

Redis의 메모리는 제한되어있기 때문에 추가적으로 Scale out, Back up을 해야 함 → Redis Cluster

부하분산 → Constant Hashing

Data Grid -> Spring Gemfire, Hazlecast

 


장점

  • 리스트, 배열과 같은 데이터를 처리하는데 유용하다.
  • 리스트형 데이터 입력과 삭제가 MySQL에 비해서 10배정도 빠르다고 한다.
  • 메모리를 활용하면서 영속적인 데이터 보존
  • Redis Server는 1개의 싱글 쓰레드로 수행되며, 따라서 서버 하나에 여러개의 서버를 띄우는 것이 가능하다.

 

참고

https://velog.io/@hyeondev/Redis-%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C