특정 키가 유효한 시간을 설정하여, 시간이 지나면 자동으로 삭제되게 만드는 기능
SET [key] [value] EX [seconds]: 초 단위로 설정SET [key] [value] PX [milliseconds]: 밀리초 단위로 설정SET session:123 "data" EX 3600 (1시간 뒤 삭제)EXPIRE [key] [seconds]: 초 단위로 설정PEXPIRE [key] [milliseconds]: 밀리초 단위로 설정EXPIREAT [key] [timestamp]: 특정 시각(Unix Timestamp)에 삭제되도록 설정EXPIRE user:token 300 (5분 뒤 삭제)TTL [key]: 남은 시간 확인 (초 단위)PTTL [key]: 남은 시간 확인 (밀리초 단위)정수: 남은 유효 시간-1: 키는 존재하지만 만료 시간이 설정되어 있지 않음 (영구적)-2: 키가 존재하지 않음PERSIST [key]사용자에게 발송된 인증 번호는 보안상 짧은 시간(예: 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
DB 부하를 줄이기 위해 조회 결과를 캐싱할 때, 데이터의 최신성을 위해 만료 시간을 둔다.
# 날씨 API 호출 결과를 10분(600초) 동안 캐싱
VALKEY> SET cache:weather:seoul "{'temp': 20}" EX 600
특정 작업이 중복 실행되지 않도록 잠금을 걸 때, 시스템 오류로 락이 안 풀리는 것을 방지하기 위해 사용한다.
# 락 획득 (30초 뒤 자동 해제)
VALKEY> SET lock:order_process "locked" EX 30 NX
NX 옵션은 키가 없을 때만 생성하라는 의미로, 락 구현 시 필수
EXPIRE를 설정한 키에 대해 다시 SET 명령어를 실행(옵션 없이)하면, 기존에 설정된 TTL은 사라지고 영구적인 키가 된다.
Valkey는 만료된 키를 즉시 삭제하기도 하지만, CPU 성능을 위해 백그라운드에서 주기적으로 샘플링하여 삭제하거나 해당 키에 접근할 때 삭제하는 방식을 병행한다.