SEO 키워드: redis-cli 명령어, Redis 명령어 정리, Redis 운영, ElastiCache redis-cli, Redis 자료구조 명령어, Redis 모니터링, Redis 클러스터
들어가며
Redis는 캐시, 세션 저장소, 메시지 큐 등 다양한 용도로 사용되는 인메모리 데이터베이스입니다. 개발 단계에서는 SDK나 ORM으로 대부분 해결되지만, 운영 환경에서는 직접 redis-cli로 접속해 데이터를 확인하고 디버깅해야 하는 순간이 반드시 찾아옵니다.
이 글에서는 실무에서 자주 사용하는 redis-cli 명령어를 자료구조별, 상황별로 정리합니다. AWS ElastiCache 환경에서의 접속 방법과 운영 시 주의해야 할 명령어도 함께 다룹니다.
아키텍처 개요
┌─────────────────────────────────────────────────────────┐
│ Redis 자료구조 한눈에 │
│ │
│ redis-cli │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────────────────┐ │
│ │ Redis Server │ │
│ │ │ │
│ │ String Hash List Set Sorted Set │ │
│ │ ────── ────── ──── ─── ─────────── │ │
│ │ SET/GET HSET/ LPUSH/ SADD/ ZADD/ │ │
│ │ INCR HGETALL RPOP SMEMBERS ZRANGE │ │
│ │ │ │
│ └───────────────────────────────────────────────────┘ │
│ │
│ 단독 모드 Sentinel 모드 Cluster 모드 │
│ redis-cli -h redis-cli redis-cli -c │
└─────────────────────────────────────────────────────────┘
접속 명령어
가장 먼저 알아야 할 것은 접속입니다. 환경마다 옵션이 다르므로 상황에 맞게 사용합니다.
# 로컬 기본 접속
redis-cli
# 호스트, 포트, 패스워드 지정
redis-cli -h 127.0.0.1 -p 6379 -a yourpassword
# DB 선택 (기본값 0, 총 16개 DB)
redis-cli -n 2
# AWS ElastiCache TLS 접속
redis-cli -h your-cluster.cache.amazonaws.com -p 6379 --tls
# 클러스터 모드 접속 (-c 플래그 필수)
redis-cli -c -h cluster.cache.amazonaws.com -p 6379 --tls
# 접속과 동시에 명령 실행
redis-cli -h 127.0.0.1 GET mykey
키 관련 명령어
Redis의 모든 자료구조에 공통으로 적용되는 키 관리 명령어입니다.
# 키 존재 여부 확인
EXISTS session:user123
# 키 타입 확인 (string / list / set / hash / zset)
TYPE session:user123
# TTL 확인 (-1이면 만료 없음, -2면 키 없음)
TTL session:user123
# 만료 시간 설정 (초 단위)
EXPIRE session:user123 3600
# 만료 시간 제거 (영구 보존으로 전환)
PERSIST session:user123
# 키 삭제
DEL session:user123
# 키 이름 변경
RENAME oldkey newkey
⚠️ KEYS vs SCAN - 운영 환경 필수 지식
# KEYS: 절대 운영 환경에서 사용 금지 (싱글 스레드 블로킹)
KEYS user:* # ❌ 운영 금지
# SCAN: 운영 환경에서는 반드시 이것으로 대체
SCAN 0 MATCH user:* COUNT 100 # ✅ 권장
# → cursor가 0으로 돌아올 때까지 반복 호출
SCAN은 커서 기반으로 동작하기 때문에 전체 키를 한 번에 읽지 않습니다. 반환된 커서가 0이 되면 전체 순회가 완료된 것입니다.
String 명령어
Redis에서 가장 기본이 되는 자료구조입니다. 단순 캐시, 카운터, 분산 락 등에 활용됩니다.
# 저장 / 조회
SET username "hong"
GET username
# TTL과 함께 저장 (EX: 초, PX: 밀리초)
SET session:abc "data" EX 1800
# 키가 없을 때만 저장 (분산 락에 활용)
SET lock:resource "1" NX EX 30
# 여러 키 한번에 저장 / 조회
MSET key1 val1 key2 val2
MGET key1 key2
# 카운터 증감
INCR page_view
INCRBY page_view 10
DECR page_view
DECRBY page_view 5
# 문자열 추가
APPEND greeting " World"
STRLEN greeting
Hash 명령어
객체를 필드 단위로 저장할 때 사용합니다. 사용자 정보, 설정값 저장에 적합합니다.
# 필드 저장
HSET user:1001 name "홍길동" age 30 email "hong@example.com"
# 단일 필드 조회
HGET user:1001 name
# 전체 필드 조회
HGETALL user:1001
# 여러 필드 조회
HMGET user:1001 name email
# 필드 존재 여부
HEXISTS user:1001 phone
# 필드 삭제
HDEL user:1001 age
# 모든 키 / 모든 값 조회
HKEYS user:1001
HVALS user:1001
# 필드 수
HLEN user:1001
# 숫자 필드 증감
HINCRBY user:1001 age 1
List 명령어
순서가 있는 데이터, 큐/스택 구현, 최근 목록 관리에 사용합니다.
# 왼쪽 / 오른쪽 추가
LPUSH myqueue job1 job2 job3
RPUSH myqueue job4
# 왼쪽 / 오른쪽에서 꺼냄
LPOP myqueue
RPOP myqueue
# 블로킹 팝 (큐 소비자 패턴, 타임아웃 초)
BLPOP myqueue 5
# 범위 조회 (0 -1 이면 전체)
LRANGE myqueue 0 -1
LRANGE myqueue 0 9 # 앞에서 10개
# 길이
LLEN myqueue
# 인덱스로 조회
LINDEX myqueue 0
# 최근 N개만 유지 (오래된 것 자동 삭제)
LTRIM recentlogs 0 99 # 최근 100개만 보존
Set 명령어
중복 없는 집합, 태그 시스템, 팔로워 목록 등에 사용합니다.
# 멤버 추가
SADD tags:post1 "redis" "database" "cache"
# 전체 멤버 조회
SMEMBERS tags:post1
# 멤버 여부 확인
SISMEMBER tags:post1 "redis"
# 멤버 제거
SREM tags:post1 "cache"
# 멤버 수
SCARD tags:post1
# 집합 연산
SUNION set1 set2 # 합집합
SINTER set1 set2 # 교집합
SDIFF set1 set2 # 차집합 (set1 기준)
# 결과를 새 키에 저장
SUNIONSTORE result set1 set2
SINTERSTORE result set1 set2
Sorted Set 명령어
점수(score) 기반 정렬이 필요한 경우 사용합니다. 실시간 랭킹, 우선순위 큐 구현에 최적입니다.
# 멤버 추가 (score 값이 낮을수록 앞)
ZADD ranking 1500 "hong" 2300 "kim" 800 "lee"
# 오름차순 조회
ZRANGE ranking 0 -1 WITHSCORES
# 내림차순 조회 (높은 점수 = 높은 순위)
ZREVRANGE ranking 0 -1 WITHSCORES
# 상위 N명 조회
ZREVRANGE ranking 0 9 WITHSCORES # TOP 10
# 특정 멤버 점수 조회
ZSCORE ranking "hong"
# 순위 조회 (0부터 시작)
ZRANK ranking "hong" # 오름차순 순위
ZREVRANK ranking "hong" # 내림차순 순위
# 점수 증감
ZINCRBY ranking 100 "hong"
# 멤버 삭제
ZREM ranking "hong"
# 전체 멤버 수
ZCARD ranking
# 점수 범위로 조회
ZRANGEBYSCORE ranking 1000 2000 WITHSCORES
서버 모니터링 명령어
운영 중 상태 확인과 성능 분석에 필수적인 명령어입니다.
# 서버 전체 정보
INFO
# 섹션별 조회
INFO memory # 메모리 사용량
INFO replication # 복제 상태 (master/replica)
INFO clients # 클라이언트 연결 수
INFO stats # 명령어 처리 통계
INFO keyspace # DB별 키 개수 및 만료 정보
# 현재 DB 키 개수
DBSIZE
# 슬로우 쿼리 조회 (실행 시간 긴 명령어)
SLOWLOG GET 10
SLOWLOG LEN
SLOWLOG RESET
# 실시간 명령어 모니터링 (운영 환경 신중하게 사용)
MONITOR # ⚠️ 성능에 영향을 줄 수 있음
# 설정 조회 / 변경
CONFIG GET maxmemory
CONFIG GET maxmemory-policy
CONFIG SET maxmemory 4gb
# 클러스터 상태
CLUSTER INFO
CLUSTER NODES
실무에서 자주 쓰는 패턴
세션 확인
# 세션 존재 여부 + TTL 한번에 확인
EXISTS session:abc123
TTL session:abc123
HGETALL session:abc123
캐시 강제 삭제
# 특정 패턴 키 일괄 삭제 (운영 환경 주의)
redis-cli -h host SCAN 0 MATCH "cache:product:*" COUNT 100
# 삭제 스크립트 (bash)
redis-cli -h host SCAN 0 MATCH "cache:product:*" COUNT 100 | \
tail -n +2 | xargs redis-cli -h host DEL
대량 데이터 Insert (파이프 모드)
# 파이프 모드로 대량 insert (일반 대비 10배 이상 빠름)
cat bulk_commands.txt | redis-cli --pipe
# 반복 실행 (1초 간격으로 10회)
redis-cli -r 10 -i 1 INFO memory
운영 시 절대 주의할 명령어
명령어위험도이유대안
| KEYS * | 🔴 높음 | 전체 블로킹 | SCAN |
| FLUSHDB | 🔴 높음 | 현재 DB 전체 삭제 | 개별 DEL |
| FLUSHALL | 🔴 매우 높음 | 전체 DB 삭제 | — |
| DEBUG RELOAD | 🟠 중간 | 서버 재로드 | — |
| MONITOR | 🟡 낮음 | 성능 저하 가능 | 짧게 사용 |
마치며
redis-cli는 단순한 디버깅 도구를 넘어 Redis 운영의 핵심 도구입니다. 특히 SCAN과 KEYS의 차이, 슬로우 쿼리 모니터링, 자료구조별 명령어 숙지는 장애 대응 속도를 결정짓는 중요한 역량입니다.
ElastiCache 환경에서는 FLUSHALL, CONFIG 일부 명령어가 제한될 수 있으므로, 사전에 허용 명령어 범위를 확인해두는 것이 좋습니다. 자주 사용하는 패턴은 스크립트화해두면 장애 상황에서 빠르게 대응할 수 있습니다.
관련 태그: #Redis #redis-cli #ElastiCache #캐시 #인메모리DB #Redis운영 #백엔드 #인프라