#0. Redis가 뭐지?
Redis에 대해 소개하는 영상이다.
Redis가 뭔지 모르고 간단한 소개영상만 보고 쓰는 글이다.
https://www.youtube.com/watch?time_continue=13&v=Gimv7hroM8A&feature=emb_logo
1. Redis(Remote Dictionary Server)
- 외부(원격)에 있는 key-value 쌍으로 자료구조 형태로 데이터를 저장하는 서버
- 데이터 베이스, 캐시
- 메모리 상에 데이터를 저장하는 서버
(Cache : 나중에 요청에 대한 결과를 미리 저장했다가 빠르게 사용하는 것)
- In-Memory Database (Cache) : Database보다 더 빠른 Memory에 더 자주 접근하고 덜 자주 바뀌는 데이터를 저장한다.
2. 다양한 자료구조
- Collection
- String, List, Set, Sorted Set, Hash 등등
3. 발생 할 수 있는 문제
- Consistency 문제
- Race Condition 문제 : 여러 개의 Thread가 경합하는 것.
(Context Switching에 따라 예측하지 않은 결과가 발생 할 수 있음.)
여러개의 쓰레드를 사용하면 Critical Section이 생길 수 있기에 이런 부분에 대한 동기화가 필요함.
[해결책]
Redis는 기본적으로 Single Threaded
Redis의 자료구조는 Atomic Critical Section에 대한 동기화를 제공
서로 다른 Transaction의 read/write 동기화 제공
4. 사용처
- 여러 서버에서 같은 데이터를 공유할 때
- Single Server라면? Atomic 자료구조 & Cache
5. 주의할 점
- Single Thread 서버이므로 시간 복잡도를 고려해서 명령어를 사용해야 한다.
- In-Memory 특성상 메모리 파편화(단편화), 가상 메모리 등에 대한 배경지식이 필요하다.