Skip to content
VDS · 데이터베이스

Redis: 캐시와 큐

VDS에 Redis를 설치하고 비밀번호와 로컬 주소 바인딩, 메모리 제한과 제거 정책, 그리고 캐시와 큐의 차이를 설명해요.

업데이트 2026년 8월 23일

Redis는 데이터를 메모리에 보관하기 때문에 캐싱, 세션, 카운터, 작업 큐에 사용돼요. VPS에서는 메모리에 들어가는 동안에만 유용해요. 사용 중인 데이터가 여유 메모리보다 크면 더 이상 속도 향상이 아니라 충돌의 원인이 돼요.

설치

apt update && apt install -y redis-server        # Debian, Ubuntu
dnf install -y redis                             # AlmaLinux, CentOS Stream
systemctl enable --now redis-server
redis-cli ping

PONG 응답이 오면 서버가 실행 중인 거예요.

필수 구성

/etc/redis/redis.conf 파일:

bind 127.0.0.1
protected-mode yes
requirepass long-random-password
maxmemory 512mb
maxmemory-policy allkeys-lru
appendonly no
systemctl restart redis-server
redis-cli -a 'password' ping

스캐너는 인터넷에 노출된 비밀번호 없는 Redis를 몇 분 안에 찾아내고 채굴에 이용해요. 애플리케이션이 같은 머신에 있다면 bind 127.0.0.1을 유지하고 6379 포트를 외부에 노출하지 마세요. 외부 접근이 필요하다면 SSH 터널이나 VPN만 사용하세요.

메모리와 제거

maxmemory를 명시적으로 설정하세요. 설정하지 않으면 Redis는 시스템이 프로세스를 죽이기 시작할 때까지 계속 커져요. 티어 메모리의 4분의 1을 주는 것이 합리적이에요.

티어머신 메모리maxmemory
VDS-12 GB256 MB
VDS-24 GB512 MB
VDS-38 GB1–2 GB
VDS-524 GB4–6 GB

정책은 역할에 따라 달라요:

  • 캐시 — allkeys-lru, 오래된 키는 조용히 제거돼요;
  • 작업 큐 — noeviction, 작업 손실은 용납할 수 없고 쓰기 오류가 더 나아요.

바로 이 모순 때문에 캐시와 큐를 하나의 데이터베이스에 섞지 마세요. 서로 다른 데이터베이스 번호(SELECT 1)나 두 개의 인스턴스로 분리하세요.

디스크 영속성

기본적으로 Redis는 주기적으로 스냅샷을 dump.rdb에 덤프해요. 순수한 캐시라면 불필요한 디스크 쓰기이므로 save를 비활성화하세요. 큐라면 appendonly yes를 활성화하세요. 그래야 머신 재부팅 후에도 작업이 손실되지 않아요.

디스크 쓰기 속도는 티어에 의해 제한된다는 점을 기억하세요. 코어당 60 MB/s, 최소 60, 최대 400 MB/s예요.

모니터링

redis-cli -a 'password' info memory
redis-cli -a 'password' info stats
redis-cli -a 'password' --stat
redis-cli -a 'password' slowlog get 10

핵심 지표는 evicted_keys예요. 지속적으로 증가한다면 메모리가 부족하고 캐시가 이득을 내지 못한다는 뜻이에요.

흔한 실수

증상원인
NOAUTH Authentication required애플리케이션에 비밀번호를 주지 않았어요
OOM command not allowednoeviction 정책에서 maxmemory에 도달했어요
DENIED Redis is running in protected modebind 127.0.0.1 상태에서 외부 접근 — 의도된 동작이에요
재부팅 후 데이터가 사라졌어요영속성이 활성화되지 않았어요
머신이 스왑에 들어갔어요maxmemory와 다른 서비스의 합이 티어 메모리를 초과했어요

프로덕션 서버에서 KEYS *를 사용하지 마세요. 이 명령은 모든 키를 순회하는 동안 Redis를 차단해요. 순회에는 SCAN을 사용하세요.