Redis란?
: Key, Value 형태의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템
: 데이터베이스, 캐시, 메시지브로커 등으로 사용되며 인메모리 데이터 구조를 가진 저장소
Cache Server
•
Look aside cache
1.
Client의 요청
2.
웹서버는 데이터가 존재하는 지 Cache 서버에 확인
3.
Cache 서버에 데이터 O → DB 조회 X, Cache 서버의 값 클라이언트에게 반환 (Cache Hit)
4.
Cache 서버에 데이터 X → DB 조회 O, Cache 서버에 해당 값 저장 후 클라이언트에게 반환 (Cache Miss)
•
Write Back
1.
웹서버는 모든 데이터를 Cache 서버에 저장
2.
Cahce 서버에 특정 시간 동안 데이터가 저장
3.
Cache 서버에 있는 데이터를 DB에 저장
4.
DB에 저장된 Cache 서버의 데이터를 삭제
Redis의 특징
•
Key, Value 구조로 쿼리를 사용할 필요가 없음
•
데이터를 디스크에 쓰는 구조가 아닌 메모리에서 데이터를 처리하기 때문에 속도가 빠름
•
String, Lists, Sets, Sorted Sests, Hashes 자료구조를 지원
◦
String
◦
Sets
◦
Sorted Sets
◦
Lists
•
Single Threaded로 한 번에 하나의 명령만 수행할 수 있음
Redis 사용 시 주의점
•
서버에 장애가 발생했을 경우, 그에 대한 운영 플랜이 필요
•
메모리 관리가 중요함
•
싱글 스레드의 특성상, 처리 시간이 오래걸리는 명령은 피해야 함
Getting Deeper
•
Master-Slave 형식의 데이터 이중화 구조에 대한 Redis Replication
•
분산 처리를 위한 Redis cluster
•
장애 복구 시스템 Redis Sentinel, Redis Topology, Redis Sharding, Redis Failover 등의 Redis를 더 효율적으로 사용하기 위한 개념이 존재