Redis(레디스)는 BSD 라이센스의 오픈소스 프로젝트이자 인메모리 데이터 저장소입니다.
목적에 따라 데이터베이스/캐시/메시지브로커/스트리밍엔진과 같은 용도로 다양하게 사용할 수 있습니다.
레디스는 또한 자체적으로 레플리케이션(Replication), Lua 스트립트, LRU 교체, 트랜잭션, 퍼시스턴스, 센티넬을 활용한 고가용성, 레디스 클러스터를 활용한 원자적 파티셔닝을 제공합니다.
레디스는 기본적으로 Key-Value 쌍의 형태로 데이터를 저장합니다.
127.0.0.1:6379> set id:username "binary"
OK
127.0.0.1:6379> set id:email 483759@naver.com
OK
127.0.0.1:6379> get id:username
"binary"
컬렉션을 포함한 다양한 자료구조를 분산 서버 환경에서 처리할 수 있습니다.
Publish/Subscribe 기능을 지원해서 서버 간 통신이 가능합니다.
현재 메모리 상태의 스냅샷을 기록하는 RDB
, 지금까지 실행된 명령어 집합을 저장하는 AOF
를 통해 메모리 상태를 영속화할 수 있습니다.
RDB가 실제 관계형 데이터베이스와 같은 기능을 지원하는 것은 아니나, 메모리를 덤프해서 다시 올리는 것이 가능합니다.
AOF는 Append Only File로, set/del과 같은 CUD 관련 명령어를 기록합니다.
두 명령어 모두의 장단점이 존재하니 성능 손실과 영속화의 트레이드 오프를 적절히 계산하여 활용하는 것이 좋습니다.
마스터/슬레이브 레플리케이션이 가능합니다.
마스터 노드에 장애가 발생하면 슬레이브에서 서비스 하거나, 읽기 부하를 분산하는 방식으로 처리할 수 있습니다.
대규모 서비스 운영 시에 반드시 활용되는 기능입니다.
초당 5만~6만QPS 이상의 처리 속도가 가능합니다.
출처 - Redis 운영 관리: Redis를 실무에 사용하기 전에 꼭 알아야 하는 실전 전략