Mingyu Kim

TTL 핵심 명령어와 활용법

특정 키가 유효한 시간을 설정하여, 시간이 지나면 자동으로 삭제되게 만드는 기능

1. TTL 설정 기본 명령어

키 생성 시점에 설정

기존 키에 만료 시간 설정/수정

2. TTL 상태 확인 및 관리

키가 언제 삭제될지 확인하거나, 설정을 취소

명령 실행 후 반환 값의 의미

설정된 만료 시간을 제거하여 키를 영구적으로 보존

3. 실무 활용 사례

일회용 인증 번호 (OTP)

사용자에게 발송된 인증 번호는 보안상 짧은 시간(예: 3분)만 유효해야 한다.

# 인증번호 5566을 180초(3분) 동안만 저장
VALKEY> SET auth:phone:01012345678 "5566" EX 180

임시 세션 및 토큰 관리

로그인 세션을 일정 시간 유지하고, 활동이 없으면 자동 로그아웃되게 한다.

# 로그인 시 토큰 저장 (1시간 유효)
VALKEY> SET token:abc12345 "user_id_77" EX 3600

# 사용자가 활동할 때마다 시간을 연장 (Sliding Window 방식)
VALKEY> EXPIRE token:abc12345 3600

캐시(Cache) 데이터 관리

DB 부하를 줄이기 위해 조회 결과를 캐싱할 때, 데이터의 최신성을 위해 만료 시간을 둔다.

# 날씨 API 호출 결과를 10분(600초) 동안 캐싱
VALKEY> SET cache:weather:seoul "{'temp': 20}" EX 600

분산 락 (Distributed Lock)

특정 작업이 중복 실행되지 않도록 잠금을 걸 때, 시스템 오류로 락이 안 풀리는 것을 방지하기 위해 사용한다.

# 락 획득 (30초 뒤 자동 해제)
VALKEY> SET lock:order_process "locked" EX 30 NX

NX 옵션은 키가 없을 때만 생성하라는 의미로, 락 구현 시 필수

💡 주의사항

덮어쓰기 주의

EXPIRE를 설정한 키에 대해 다시 SET 명령어를 실행(옵션 없이)하면, 기존에 설정된 TTL은 사라지고 영구적인 키가 된다.

메모리 관리

Valkey는 만료된 키를 즉시 삭제하기도 하지만, CPU 성능을 위해 백그라운드에서 주기적으로 샘플링하여 삭제하거나 해당 키에 접근할 때 삭제하는 방식을 병행한다.