Redis란 무엇인가?
Remote Dictionary Server로 key-value 형태로 데이터를 저장하고 관리하는 서버를 의미합니다.
Redis의 여러가지 주요 특성 때문에 대규모 서비스를 운영하고 있는 큰 기업들이 주로 사용합니다.
Redis의 주요 특성
1. Key-Value 스토어
기본적으로 Redis는 Key-Value 형태의 데이터 저장소입니다.
127.0.0.1:6379> set user_1 "{userName:\"bk\", birthday:\"1993-10-20\"}"
OK
127.0.0.1:6379> keys *
1) "user_1"
127.0.0.1:6379> get user_1
"{userName:\"bk\", birthday:\"1993-10-20\"}"
2. 컬렉션 지원
Redis에서 가장 중요한 특징이라면 컬렉션 기능이라고 말할 수 있습니다.
일반적으로 사용하는 사용하는 컬렉션은 하나의 서버 내부에서 동작합니다.
그러나 Redis를 이용하면 이런 특성을 분산 서버 환경에서 처리할 수 있어서, 전체적인 서비스를 설계하거나 구현할 때 많은 이점을 얻을 수 있습니다.
3. Pub/Sub 지원
Redis는 Publish/Subscribe 기능을 지원하는데 이는 서버 간 통지가 필요할 때 매유 유용합니다.
4. 디스크 저장
Redis의 특징 중 하나는 현재의 메모리 상태를 디스크에 저장할 수 있다는 것 입니다.
현재 메모리 상태의 스냅샷을 남기는 'RDB 기능'과 지금까지 실행된 업데이트 관련 명령어의 집합인 'AOF'가 있습니다.
(RDB 기능에는 메모리 내용을 저장하는 기능 이외에는 아무것도 지원하지 않습니다.)
이렇게 덤프한 내용은 다시 메모리에 올려서 사용할 수 있습니다.
AOF는 "Append Only File"의 약어로 set/del 등의 업데이트 관련 명령을 받으면 기억해둡니다.
Redis에서는 가능하면 이 두개를 모두 사용하는 것이 좋다고 하지만, 디스크릴 사용해서 저장하는 만큼 성능 손실은 어느정도 감수해야 합니다.
5. 복제
Redis는 마스터/슬레이브 리플리케이션(Replication)을 지원합니다.
마스터에 장애가 발생하면 슬레이브로 서비스하거나 부하가 많을때는 슬레이브를 이용하여 읽기 처리할 수도 있습니다.
대규모 서비스에서 Redis를 저장소로 안정적으로 사용하려면 복제 기능을 반드시 이용해야 합니다.
6. 빠른 속도
Redis를 선택하는 가장 큰 이유는 성능입니다.
초당 50,000~60,000QPS 이상의 처리 속도가 필요하다면 Redis나 Memcached를 사용해야 합니다.
Memcached에 저장소의 개념이 추가된 것이 Redis라고 할 수 있습니다. 저장소는 "데이터가 유지되어야 한다"라는 특성이 있습니다.
이 외에도 컬렉션이라는 자료구조(List, Hash, Set, Sorted Set)를 제공하므로 개발 생산성에는 Redis가 Memcached보다 더 이점이 있습니다.
'Redis' 카테고리의 다른 글
6. Spring Redis 분산락(Distribute Lock)을 활용한 동시성 처리 (1) | 2024.03.12 |
---|---|
5. Redis HA(High availability)와 Sentinel (0) | 2024.02.21 |
4. Redis 복제 (0) | 2024.02.15 |
3. Redis 운영과 관리 (0) | 2023.10.01 |
2. Docker로 Redis 실행하기 (0) | 2023.09.30 |