시스템 (운영체제 등)

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는 모든 변경 사항을 기록하여 데이터 유실을 최소화함
둘 다 활성화하면 속도와 안정성을 모두 확보 가능! 🚀

zerg96

Recent Posts

타입스크립트 (TypeScript)

1. 타입스크립트 개요 타입스크립트(TypeScript)는 마이크로소프트(Microsoft)가 개발한 자바스크립트(JavaScript)의 상위 집합(Superset) 언어입니다.즉, 자바스크립트에 정적 타입(Static Type)을 추가하고,…

5개월 ago

노트북(윈도우)에서 아이폰 유선 테더링 하기

윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…

6개월 ago

오라클 래치(Latch)

오라클 데이터베이스의 성능을 논할 때, 내부적으로 발생하는 경합(Contention)은 피할 수 없는 주제다. 특히 다수의 프로세스가…

7개월 ago

사장님도 3표, 나도 3표? ‘3%룰’ 완전 정복!

안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…

7개월 ago

Vector Store(벡터 스토어)

'벡터 스토어' 완벽 가이드: AI 시대, 데이터의 새로운 심장을 만나다 IT 업계는 인공지능(AI)이라는 거대한 패러다임의…

7개월 ago

Gemini CLI (재미나이 CLI)

1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…

7개월 ago