Redis (Remote Dictionary Server, 레디스)

대표적인 NoSQL DB인 Redis(레디스)는 Remote Dictionary Server의 약자로, 오픈 소스 인메모리 키-값 저장소(key-value store)입니다. 주로 캐싱, 세션 저장, 메시지 브로커, 실시간 데이터 처리 등에 사용됩니다.

🔹 Redis의 특징

  1. 인메모리 데이터베이스
    • 데이터를 디스크가 아닌 메모리(RAM)에 저장하여 빠른 읽기/쓰기 성능을 제공
    • NoSQL 데이터베이스로 동작하며, 관계형 데이터베이스(RDBMS)보다 빠름
  2. 다양한 데이터 구조 지원
    • 문자열(String), 리스트(List), 해시(Hash), 셋(Set), 정렬된 셋(Sorted Set) 등 여러 자료구조 제공
  3. 퍼시스턴스(영속성) 지원
    • AOF(Append-Only File): 모든 변경 사항을 로그에 기록
    • RDB(Redis Database File): 특정 시점의 스냅샷을 저장
  4. 클러스터링 및 복제 기능
    • Master-Slave 복제를 통해 데이터 백업 가능
    • Redis Cluster를 이용한 분산 처리
  5. 메시지 브로커 기능
    • Pub/Sub(발행-구독) 시스템을 지원하여 실시간 메시지 처리 가능
  6. 트랜잭션 및 Lua 스크립트 지원
    • MULTI, EXEC, WATCH 명령어를 이용한 트랜잭션 제공
    • Lua 스크립트를 이용해 복잡한 연산을 한 번에 실행 가능

🔹 Redis 사용 사례

웹 애플리케이션 캐싱
세션 저장소 (ex: 로그인 세션 관리)
순위표 및 랭킹 시스템 (ex: 게임 리더보드)
실시간 데이터 스트리밍 (ex: 채팅, 알림 시스템)
메시지 큐 및 Pub/Sub 시스템 (ex: 마이크로서비스 간 통신)

🔹 Redis vs. Memcached

항목RedisMemcached
데이터 구조다양한 자료구조 지원 (String, List, Hash, Set, Sorted Set)단순 Key-Value (String)
데이터 영속성지원 (AOF, RDB)미지원
복제 및 클러스터링지원미지원
트랜잭션지원미지원
속도빠름더 빠름 (하지만 기능이 제한적)

🔹 Redis 설치 및 기본 사용법 (Linux 기준)

1️⃣ Redis 설치

sudo apt update
sudo apt install redis-server

2️⃣ Redis 실행

redis-server

3️⃣ Redis 클라이언트 접속

redis-cli

4️⃣ 기본 명령어

SET key1 "Hello Redis"  # 데이터 저장
GET key1 # 데이터 조회
DEL key1 # 데이터 삭제
EXPIRE key1 10 # 10초 후 데이터 자동 삭제
INCR counter # 숫자 증가
LPUSH mylist "A" "B" # 리스트에 값 추가
LRANGE mylist 0 -1 # 리스트 값 조회

🔹 결론

Redis는 빠른 속도, 다양한 데이터 구조, 영속성 지원, 메시지 브로커 기능 등을 제공하여 웹 서비스, 캐싱, 실시간 데이터 처리에 널리 사용됩니다.
사용 목적에 따라 캐시, 데이터 저장소, 메시지 큐 등으로 활용할 수 있습니다. 🚀


추가정보

Redis는 RAM에 저장하는데, 껐다 켜면 데이터가 사라질까?

기본적으로 Redis는 데이터를 RAM(메모리)에 저장하므로, 서버를 껐다 켜면 데이터가 사라질 수 있습니다. 하지만 Redis는 데이터를 유지하기 위한 영속성(Persistence) 기능을 제공하여, 껐다 켜도 데이터를 복구할 수 있습니다.

🔹 Redis의 데이터 영속성 방법

1️⃣ RDB (Redis Database File) – 스냅샷 저장

  • 특정 시간 간격마다 메모리 데이터를 디스크에 저장
  • .rdb 파일을 만들어서 저장 (기본 경로: /var/lib/redis/dump.rdb)
  • 빠르지만 일부 데이터 손실 가능 (최근 변경된 데이터는 저장되지 않을 수도 있음)

2️⃣ AOF (Append-Only File) – 변경 로그 저장

  • 모든 쓰기 연산을 로그 파일에 기록
  • Redis가 다시 시작될 때 AOF 로그를 차례대로 실행하여 데이터를 복구
  • RDB보다 데이터 손실 위험이 적지만, 로그 파일이 커질 수 있음

3️⃣ RDB + AOF 동시 사용

  • RDB는 빠른 백업, AOF는 데이터 보존력 강화
  • 대부분의 경우 AOF를 활성화하고 RDB를 보조적으로 사용

🔹 Redis 영속성 설정 방법

1️⃣ RDB 설정

Redis 설정 파일(redis.conf)에서 다음 옵션을 조정하면 RDB 스냅샷 저장 주기를 변경할 수 있음.

save 900 1   # 900초(15분) 동안 1번이라도 변경되면 저장
save 300 10 # 300초(5분) 동안 10번 변경되면 저장
save 60 1000 # 60초(1분) 동안 1000번 변경되면 저장

기본적으로 활성화됨
SAVE 명령어를 사용하여 즉시 저장 가능 (SAVE는 동기식, BGSAVE는 비동기식)

2️⃣ AOF 설정

AOF를 활성화하려면 redis.conf에서 다음 설정을 변경

appendonly yes          # AOF 활성화
appendfilename "appendonly.aof" # AOF 파일명 설정

AOF 모드는 성능과 안정성을 조절할 수 있음:

appendfsync always   # 매번 쓰기(느리지만 안전)
appendfsync everysec # 1초마다 쓰기(기본값, 균형 잡힌 선택)
appendfsync no # OS가 알아서 처리(빠르지만 데이터 손실 가능)

3️⃣ 현재 설정 확인

Redis CLI에서 설정 확인 가능

CONFIG GET save
CONFIG GET appendonly

🔹 결론

💡 Redis는 기본적으로 데이터를 RAM에 저장하므로 전원을 끄면 데이터가 사라질 수 있지만, RDB 또는 AOF 기능을 사용하면 데이터를 유지할 수 있습니다.
RDB는 주기적으로 저장하며 빠름, AOF는 모든 변경 사항을 기록하여 데이터 유실을 최소화함
둘 다 활성화하면 속도와 안정성을 모두 확보 가능! 🚀

Leave a Comment