Redis는 빠른 데이터 처리가 필요한 다양한 환경에서 사용되는 메모리 기반의 키-값 데이터 저장소다. 주로 캐시, 작업 큐, 세션 관리 등에서 활용되며, 데이터 보존 기능을 추가해 영구적 데이터 저장소로도 사용할 수 있다. 이 첫 번째 포스트에서는 Redis의 기본 개념과 주요 설정 파일인 redis.conf에 대해 알아보자.

1. Redis의 기본 개념과 특징

Redis는 메모리(RAM)에 데이터를 저장해 높은 속도를 자랑하는 NoSQL 데이터베이스다. 이러한 특징 덕분에 다음과 같은 용도로 널리 쓰인다.

  • 캐시(Cache): 웹 애플리케이션의 데이터 응답 속도를 높이기 위해 자주 호출되는 데이터를 Redis에 저장해 빠르게 불러온다.
  • 세션 저장소(Session Storage): 사용자 세션 정보를 저장해 빠르게 액세스하고, 세션 데이터를 관리할 수 있다.
  • 작업 큐(Queue): 비동기 작업 큐로, Celery와 같은 라이브러리와 함께 작업을 예약하고 빠르게 처리한다.
Redis key concepts infographic

Redis의 주요 장점

  • 속도: 메모리에 데이터를 저장해 빠르게 읽고 쓸 수 있어, 응답 지연을 최소화할 수 있다.
  • 다양한 데이터 구조 지원: 단순한 키-값 저장소뿐만 아니라 리스트, 셋, 해시맵 등 다양한 구조를 지원한다.
  • 확장성: 클러스터 구성을 통해 데이터 저장 용량과 처리 성능을 확장할 수 있다.

Redis의 휘발성과 데이터 보존 옵션

기본적으로 Redis는 휘발성 데이터를 다루는 구조로 설계되어 있어, 서버 재시작 시 메모리에 저장된 데이터가 사라질 수 있다. 이를 해결하기 위해 Redis는 두 가지 데이터 보존 옵션을 제공한다.

  • RDB (Redis Database) 스냅샷: 일정 주기마다 메모리의 데이터를 디스크에 스냅샷 형태로 저장한다.
  • AOF (Append-Only File): 모든 쓰기 작업을 디스크에 기록하여 서버 재시작 시 데이터를 복구할 수 있도록 한다.

Redis를 캐시 용도로만 사용한다면 데이터 휘발성에 대해 크게 신경 쓰지 않아도 되지만, 영구적인 데이터 보존이 필요하다면 이 옵션을 활용할 수 있다.

2. Redis 설정 파일 (redis.conf)

Redis의 주요 설정 파일인 redis.conf는 Redis 서버의 동작 방식을 세부적으로 설정할 수 있다. 일반적으로 /etc/redis/redis.conf 경로에 위치하며, Redis 설치 시 자동으로 생성된다.

redis.conf 파일의 주요 설정 항목

Redis configuration file structure diagram
1) 네트워크 설정
  • port: Redis 서버가 사용하는 포트를 설정한다. 기본 포트는 6379이다.
port 6379
  • bind: Redis 서버가 수신할 IP 주소를 지정한다. 기본값은 127.0.0.1로 로컬 연결만 허용한다.
bind 127.0.0.1
2) 보안 설정
  • requirepass: Redis 서버에 접근하기 위한 비밀번호를 설정한다. 생략하면 비밀번호 없이 접속이 가능하다.
requirepass yourpassword
  • protected-mode: Redis를 외부 접근으로부터 보호하는 모드로, 기본값은 yes이며 로컬에서만 연결을 허용한다.
3) 메모리 관리
  • maxmemory: Redis가 사용할 최대 메모리 용량을 설정한다. 제한이 없으면 시스템 메모리의 허용 한도까지 사용한다.
maxmemory 256mb
  • maxmemory-policy: 메모리가 꽉 찼을 때 삭제할 데이터를 정하는 정책이다. allkeys-lru는 가장 오랫동안 사용되지 않은 데이터를 제거한다.
maxmemory-policy allkeys-lru
4) 데이터 보존 설정
  • save: RDB 스냅샷을 주기적으로 생성하여 디스크에 저장한다. 예를 들어, 아래 설정은 60초마다 1000개 이상의 키가 변경될 경우 스냅샷을 생성한다.
save 60 1000
  • appendonly: AOF 모드를 활성화하여 데이터 보존성을 높인다. yes로 설정하면 모든 쓰기 작업이 AOF 파일에 기록된다.
appendonly yes
5) 로깅과 디버깅 설정
  • loglevel: 로그 수준을 설정한다. notice는 일반적인 메시지만 기록하며, debug는 모든 디버그 정보를 기록한다.
loglevel notice
  • logfile: 로그 파일의 경로를 지정한다. 기본값은 stdout으로, 별도의 파일에 기록되지 않는다.
logfile /var/log/redis/redis.log

3. Redis 설정 변경 후 적용 방법

설정 파일에서 원하는 옵션을 수정한 후 Redis 서버를 재시작하여 설정을 적용할 수 있다.

sudo systemctl restart redis-server

설정 변경 후, Redis가 정상적으로 작동하는지 확인하려면 다음 명령어를 사용할 수 있다.

redis-cli ping

PONG이 반환되면 Redis 서버가 정상 동작 중임을 의미한다.

마치며

Redis의 기본 개념과 설정 파일의 주요 항목을 알아보았다. Redis는 설정을 통해 성능과 보존성을 세부적으로 조절할 수 있으므로, 사용 목적에 맞춰 설정을 최적화하는 것이 중요하다. 다음 편에서는 Redis의 데이터 보존 옵션인 RDB와 AOF에 대해 깊이 알아보겠다.