원문은 2015년 4월 14일 ObjectRocket.com/blog에 게시되었습니다.
Redis®는 단순하고 직관적인 명령줄 인터페이스(CLI)를 제공합니다. 비교적 간단해 보이지만, 의외로 다양하고 유용한 기능들을 숨기고 있습니다. 이 글에서는 기본적인 사용법부터 시작해 redis-cli 클라이언트가 제공하는 주요 기능과 옵션을 하나씩 살펴보겠습니다.
Redis CLI에서 꼭 알아야 할 10가지 명령어
1. 한 번의 실행으로 연결과 인증 동시에 처리하기
가장 기본적인 방법으로, 명령 실행 시 모든 옵션을 함께 지정하면 됩니다.
cweid@strange:~$ redis-cli -h 127.0.0.1 -p 6379 -a mysupersecretpassword
127.0.0.1:6379> PING
PONG
-h로 호스트, -p로 포트, -a로 비밀번호를 지정했습니다. PING 명령에 PONG 응답이 돌아오면 정상적으로 자신의 Redis 서버에 접속하고 인증에 성공한 것입니다.
2. 두 단계로 나눠서 연결 후 인증하기
접속 시점에는 인증 정보를 넘기지 않고, 연결 이후에 AUTH 명령으로 인증할 수도 있습니다.
cweid@strange:~$ redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> AUTH mysupersecretpassword
OK
127.0.0.1:6379> PING
PONG
3. UNIX 소켓으로 연결 및 인증하기
Redis 서버와 클라이언트가 같은 머신에서 실행 중이라면, TCP 대신 UNIX® 소켓을 통해 연결하는 것이 더 효율적일 수 있습니다.
참고: 호스트와 포트, 그리고 소켓 경로를 모두 지정한 경우 redis-cli는 UNIX 소켓을 우선적으로 사용합니다.
cweid@strange:~$ redis-cli -s /tmp/redis.sock
127.0.0.1:6379> AUTH mysupersecretpassword
OK
127.0.0.1:6379> PING
PONG
여기까지 커맨드 라인에서 Redis 인스턴스에 접속하고 인증하는 방법을 알아봤습니다. 이제 실무에서 유용하게 활용할 수 있는 예제들을 살펴보겠습니다.
4. 명령을 실행하고 결과만 표준 출력으로 받기
인터랙티브 셸에 들어가지 않고 단일 명령의 결과만 바로 확인하고 싶다면, 명령어를 인자로 전달하면 됩니다.
cweid@strange:~$ redis-cli -h 127.0.0.1 -p 6379 -a mysupersecretpassword PING
PONG
5. 동일한 명령 여러 번 반복 실행하기
같은 명령을 n번 반복해서 실행해야 할 때는 -r(repeat) 옵션을 사용합니다.
cweid@strange:~$ redis-cli -h 127.0.0.1 -p 6379 -a mysupersecretpassword -r 4 PING
PONG
PONG
PONG
PONG
6. 반복 실행 사이에 1초 간격 추가하기
-i(interval) 옵션을 -r과 함께 사용하면 반복 실행 사이에 딜레이를 줄 수 있습니다.
cweid@strange:~$ redis-cli -h 127.0.0.1 -p 6379 -a mysupersecretpassword -i 1 -r 4 PING
PONG
PONG
PONG
PONG
위 명령은 각 PING 명령 사이에 1초씩 대기합니다. 모니터링 스크립트나 상태 추적에 유용합니다.
7. 반복 실행 간격을 1초 미만(소수점)으로 설정하기
-i 옵션에는 부동 소수점 숫자를 전달할 수도 있어, 초 단위보다 더 짧은 간격도 가능합니다.
cweid@strange:~$ redis-cli -h 127.0.0.1 -p 6379 -a mysupersecretpassword -i 0.1 -r 4 PING
PONG
PONG
PONG
PONG
이 명령은 0.1초(10분의 1초)마다 PING을 실행합니다.
8. Redis 인스턴스 진단 정보 확인하기(--stat)
연결된 Redis 인스턴스에 대한 간단한 진단 정보를 실시간으로 확인하려면 --stat 옵션을 사용합니다.
cweid@strange:~$ redis-cli -h 127.0.0.1 -p 6379 -a mysupersecretpassword --stat
------- data ------ --------------------- load -------------------- - child -
keys mem clients blocked requests connections
0 790.80K 1 0 122 (+0) 16
0 790.80K 1 0 123 (+1) 16
0 790.80K 1 0 124 (+1) 16
0 790.80K 1 0 125 (+1) 16
0 790.80K 1 0 126 (+1) 16
--stat는 리눅스의 top 명령처럼 서버 상태를 지속적으로 갱신하며 보여주며, 다음 정보를 확인할 수 있습니다.
- 서버에 저장된 키(keys) 개수
- 서버의 전체 메모리 사용량(mem)
- 연결되거나 블록된 클라이언트 수(clients, blocked)
- 서버가 처리한 총 요청 수(requests)
- 현재 활성 연결 수(connections)
문제가 발생한 Redis 서버를 전체적으로 파악할 때 유용한 명령입니다.
9. Redis 명령 지연 시간(latency) 측정하기
서버 통계를 확인했다면, 이번에는 들어오는 명령의 응답 지연 시간을 측정해 보겠습니다. 역시 커맨드 라인에서 간단히 실행할 수 있습니다.
cweid@strange:~$ redis-cli -h 127.0.0.1 -p 6379 -a mysupersecretpassword --latency
min: 0, max: 1, avg: 0.13 (763 samples)
출력 결과에서 최소(min), 최대(max), 평균(avg) 요청 처리 시간과 수집된 샘플 수를 확인할 수 있습니다.
참고: 지연 시간은 마이크로초(microseconds) 단위로 표시됩니다. Redis 지연 시간 모니터링에 대한 자세한 내용은 공식 문서의 latency monitoring 섹션을 참고하세요.
10. 키스페이스(keyspace) 분석하기(--bigkeys)
큰 문자열 값이나 대용량 데이터 구조를 찾아 키스페이스를 분석하려면 --bigkeys 옵션을 사용합니다. 이 명령은 keyspace에서 크기가 큰 키를 찾아내는 동시에, 키 타입별 분포 현황도 함께 보여줍니다.
cweid@strange:~$ redis-cli -h 127.0.0.1 -p 6379 -a mysupersecretpassword --bigkeys
# Scanning the entire keyspace to find biggest keys as well as
# average sizes per key type. You can use -i 0.1 to sleep 0.1 sec
# per 100 SCAN commands (not usually needed).
[00.00%] Biggest string found so far 'user:paul' with 4 bytes
[00.00%] Biggest string found so far 'barrrr' with 19612 bytes
-------- summary -------
Sampled 4 keys in the keyspace!
Total key length in bytes is 29 (avg len 7.25)
Biggest string found 'barrrr' has 19612 bytes
4 strings with 19624 bytes (100.00% of keys, avg size 4906.00)
0 lists with 0 items (00.00% of keys, avg size 0.00)
0 sets with 0 members (00.00% of keys, avg size 0.00)
0 hashs with 0 fields (00.00% of keys, avg size 0.00)
0 zsets with 0 members (00.00% of keys, avg size 0.00)
결과 출력을 통해 각 키의 타입과 크기 등 매우 유용한 정보를 얻을 수 있습니다. 메모리 사용량이 비정상적으로 증가했을 때 원인 키를 찾는 데 특히 효과적입니다.
마치며
전반적으로 Redis CLI는 Redis 인스턴스를 관리하기 위한 강력한 도구입니다. 내장된 다양한 옵션을 잘 활용하면 문제가 발생한 Redis 서버를 빠르게 분석하고 진단할 수 있습니다. 오늘 소개한 10가지 명령어를 숙지해 두면 일상적인 운영과 장애 대응에 큰 도움이 될 것입니다.
궁금한 점이나 피드백이 있다면 언제든 의견을 남겨주세요.