전체 치트시트

Redis CLI 명령어 치트시트

redis-cli 빠른 참조: 연결 & info, key/string 명령, hashes, lists, sets, sorted sets, streams, pub/sub, 서버 관리, 영속성 & 복제, 진단 — 자주 쓰는 옵션과 실전 예시까지 정리했습니다.

명령어 42개

연결 & Info

redis-cli -h <host> -p <port> -a <pwd>

Redis 서버에 연결해 인터랙티브 REPL 을 엽니다.

-h host; -p 6379; -a password; --user user; --pass password; --tls; --insecure; -n dbnum

redis-cli -h redis.internal -p 6379 --user monitoring --pass ***
redis-cli AUTH <password>

현재 연결에서 인증합니다(REPL 을 연 후).

--user <user> && AUTH password; ACL 스타일

redis-cli AUTH my_secret_password
redis-cli PING

PING 을 보내면 PONG 응답 — 기본적인 연결 / 헬스 체크.

모든 연결 옵션(-h / -p / --pass 등); -r 반복; -i 간격

redis-cli -h redis -p 6379 -i 5 PING
redis-cli INFO [section]

서버 통계를 표시합니다(server / clients / memory / replication / keyspace / stats / …).

INFO [server|clients|memory|stats|replication|keyspace|cluster|commandstats]; --stat 간단한 실시간 카운터

redis-cli -h redis INFO memory | head && redis-cli --stat -i 5 -h redis
redis-cli CLIENT LIST

현재 클라이언트 연결 목록(id, addr, fd, name, …).

CLIENT LIST; CLIENT GETNAME; CLIENT SETNAME

redis-cli CLIENT LIST | awk '{print $1, $2}' | head
redis-cli CLIENT KILL <id|addr>

클라이언트를 끊습니다(id, addr host:port, TYPE / ADDR / USER / LADDR 필터).

KILL ADDR ip:port; KILL TYPE normal|master|replica|pubsub; KILL USER username

redis-cli CLIENT KILL ADDR 10.0.1.42:54321 && redis-cli CLIENT LIST | wc -l

Key & String

GET / SET / SETEX / SETNX

문자열 값을 읽기/쓰기; SETEX 는 TTL 을 추가, SETNX 는 키가 없을 때만 기록.

SET key val EX N (TTL 초) | PX N (ms) | NX/XX; GETEX (Redis 6.2)

redis-cli SET session:42 '{"user":42}' EX 3600 NX && redis-cli GET session:42
MSET / MGET / MSETNX

다중 키 문자열 연산; MSETNX 는 키가 하나라도 있으면 거부합니다.

redis-cli MSET cache:hit:1 ok cache:hit:2 ok && redis-cli MGET cache:hit:1 cache:hit:2 cache:miss:1
INCR / INCRBY / INCRBYFLOAT

원자적 카운터 연산 — rate limiter & counter 에 적합.

redis-cli INCR ratelimit:user:42 redis-cli INCRBY hitcounter:2026-07-23 5 redis-cli INCRBYFLOAT metric:load 0.05
APPEND / STRLEN / DEL / EXISTS

흔히 쓰는 문자열 키 관리: 텍스트 추가, 길이, 단일/다중 삭제.

DEL key [key ...]; EXISTS k1 k2 (존재 개수); TYPE key

redis-cli APPEND log:42 'request\n' && redis-cli STRLEN log:42

Key & TTL

EXPIRE / PEXPIRE / TTL / PTTL / PERSIST / EXPIREAT

TTL 설정/조회(초/밀리초/절대 Unix 시간); PERSIST 는 TTL 을 해제합니다.

EXPIRE key seconds; PEXPIRE key ms; EXPIREAT key unix_seconds; NX/XX/GT/LT

redis-cli EXPIRE session:42 300 && redis-cli TTL session:42
KEYS pattern / SCAN

KEYS 는 O(N) 이라 큰 DB 에서 위험 — 커서 기반 SCAN 을 권장.

SCAN cursor MATCH pattern COUNT N TYPE type; --no-warnings

redis-cli --scan --pattern 'cache:hit:*' | head -20
OBJECT ENCODING|HELP|FREQ|IDLETIME|REFCOUNT <key>

내부 인코딩, 메모리, 마지막 접근 시각 조회(디버그 & RDS 단계 튜닝).

redis-cli OBJECT ENCODING big:set && redis-cli OBJECT IDLETIME big:set

Hash

HSET / HGET / HMSET / HMGET / HGETALL

작은 객체를 해시로 저장 — 프로필, 설정, 세션에 잘 어울립니다.

HSET key f1 v1 f2 v2; HMGET key f1 f2; HSETNX f v 없으면만 set

redis-cli HMSET user:42 name Alice email [email protected] && redis-cli HGETALL user:42
HKEYS / HVALS / HLEN / HEXISTS / HDEL

해시를 탐색/가지치기: 키/값 목록, 길이, 존재 여부, 삭제.

redis-cli HKEYS user:42 && redis-cli HLEN user:42 && redis-cli HEXISTS user:42 admin
HINCRBY / HINCRBYFLOAT

해시 필드에 대한 원자적 카운터 — 중첩 카운트 메트릭에 최적.

redis-cli HINCRBY orders:2026-07-23 paid_count 1 && redis-cli HINCRBYFLOAT orders:2026-07-23 gmv 19.95

List

LPUSH / RPUSH / LPOP / RPOP

리스트를 큐(LPUSH/LPOP = FIFO) 또는 스택(LPUSH/RPOP = 백오프 큐)로 사용.

redis-cli RPUSH jobs:queue job1 job2 job3 && redis-cli LPOP jobs:queue
LRANGE / LLEN / LINDEX / LSET / LREM

리스트의 범위를 읽기/관리; LSET 은 인덱스 필요; LREM count>0 앞, <0 뒤에서.

LRANGE key 0 -1 전체; LINDEX 0 머리; LREM 0 value 전체; LTRIM start stop 범위 유지

redis-cli LRANGE jobs:queue 0 -1 && redis-cli LTRIM logs:2026-07-23 -1000 -1
BLPOP / BRPOP / BRPOPLPUSH

블로킹 변형 — 비어 있으면 N 초 대기 후 pop; 안전한 큐 워커.

BLPOP key timeout (초, 0 = 무한); Redis 6.2+ 의 COUNT 옵션

redis-cli BLPOP jobs:queue 0
RPOPLPUSH src dst / LMOVE src dst LEFT|RIGHT (6.2+)

한쪽에서 pop 하고 다른 쪽으로 push — 안전한 큐 처리.

redis-cli LMOVE jobs:queue jobs:processing RIGHT LEFT

Set

SADD / SMEMBERS / SCARD / SISMEMBER

셋 연산: 멤버십, 크기, 일괄 확인(0/1 반환).

SADD k m1 m2 ...; SCARD k; SISMEMBER k m

redis-cli SADD tags:42 redis postgres mongo && redis-cli SCARD tags:42
SREM / SPOP / SRANDMEMBER

삭제, 랜덤 pop(삭제) 또는 랜덤 선택(보존) — 샘플링/추첨에 유용.

redis-cli SRANDMEMBER lottery:tickets 3 && redis-cli SPOP lottery:tickets 1
SINTER / SUNION / SDIFF / SDIFFSTORE

셋 대수 — 교집합, 합집합, 차집합; *_STORE 는 키에 저장.

redis-cli SINTER tags:a tags:b tags:c && redis-cli SDIFFSTORE missing:set tags:all tags:42

Sorted Set (Zset)

ZADD / ZSCORE / ZRANGE / ZCARD

멤버를 score 와 함께 저장; ZRANGE 는 score(WITHSCORES) 또는 lex 순서.

ZADD k score m [score m ...]; ZRANGEBYSCORE -inf +inf; ZREVRANGE

redis-cli ZADD lb:game alice 1500 bob 1300 carol 1750 && redis-cli ZRANGE lb:game 0 -1 REV WITHSCORES
ZRANGEBYSCORE / ZRANK / ZINCRBY / ZREM

zset 의 범위/순위/카운터 — top-N, 하한 슬라이드, 리더보드.

ZRANGEBYSCORE min max LIMIT offset count; ZREVRANK; ZREM k m [m...]

redis-cli ZADD ratelimit:api 1750731000.123 10.0.1.42 1750731050.456 10.0.1.7 && redis-cli ZREMRANGEBYSCORE ratelimit:api 0 $(date +%s.%N --date='-5 minutes')

Pub/Sub & Streams

SUBSCRIBE / PSUBSCRIBE / PUBLISH / UNSUBSCRIBE

와이어 위 실시간 pub/sub — 가벼운 브로드캐스트, 영속성 없음.

PSUBSCRIBE news:*; PUBLISH channel msg; PUB/SUB NUMSUB 조회

redis-cli PSUBSCRIBE 'app.*' & PID=$!; redis-cli PUBLISH app.notice 'red-button pressed'; sleep 0.1; kill $PID
XADD / XLEN / XRANGE / XREAD

Stream = 컨슈머 그룹이 있는 append-only 로그(Redis 5+).

XADD k * f v; XADD k MAXLEN ~ 1000 * f v (capped); XREAD / XREADGROUP; 컨슈머 이름; XAUTOCLAIM

redis-cli XADD events * user 42 action click && redis-cli XLEN events && redis-cli XRANGE events - +
XREAD BLOCK 0 STREAMS k $

새 엔트리를 영원히 대기 — 워커 큐용 컨슈머 그룹과 짝을 이룹니다.

redis-cli XGROUP CREATE events grp1 0 MKSTREAM && redis-cli XREADGROUP GROUP grp1 c1 BLOCK 0 COUNT 10 STREAMS events '>'

서버 관리

FLUSHDB / FLUSHALL [ASYNC]

현재(FLUSHDB) 또는 모든(FLUSHALL) 데이터베이스를 비웁니다. ⚠️ 파괴적.

FLUSHALL ASYNC; FLUSHDB ASYNC; --no-auth-warning

redis-cli -h dev FLUSHDB
DBSIZE / CONFIG GET|SET <key>

키 개수 조회와 런타임 설정(memory limit, appendonly 등) 관리.

CONFIG GET dir/save/maxmemory; CONFIG SET maxmemory 1gb; CONFIG REWRITE 영속화

redis-cli CONFIG SET maxmemory-policy allkeys-lru && redis-cli CONFIG REWRITE
SLOWLOG GET|len|reset

slowlog-log-slower-than(마이크로초)을 넘긴 명령을 조회합니다.

SLOWLOG GET 10; SLOWLOG LEN; SLOWLOG RESET

redis-cli SLOWLOG GET 10 | jq '.[].command'
MONITOR

모든 클라이언트가 실행한 모든 명령의 스트림 — 디버그 전용, 비용이 매우 큽니다.

추가 플래그 없음; --bigkeys (redis-cli --bigkeys 와 함께 최고); --memkeys; --latency; --intrinsic-latency

timeout 2 redis-cli MONITOR | grep -E 'EXPIRE|GET.*:42'
DEBUG ... / MEMORY USAGE <key>

내부 조회: OBJECT 인코딩, 키당 메모리(디버그 전용 플래그).

MEMORY USAGE key [SAMPLES N]; DEBUG OBJECT-DURATION 또는 DEBUG RELOAD-ALL-COMMANDS (드묾)

redis-cli MEMORY USAGE user:42 SAMPLES 5 && redis-cli MEMORY DOCTOR
ACL WHOAMI / ACL CAT / ACL GETUSER

ACL 디버깅(Redis 6+).

redis-cli ACL WHOAMI && redis-cli ACL GETUSER deployer | head -20

영속성

BGSAVE / SAVE / LASTSAVE

RDB 스냅샷 트리거(BGSAVE = fork+async); LASTSAVE 는 마지막 스냅샷 시각.

redis-cli BGSAVE && redis-cli LASTSAVE
BGREWRITEAOF

백그라운드에서 AOF 파일을 재작성(컴팩션).

재작성도 잠깐 블록; auto-aof-rewrite-percentage 가 임계치면 자동 실행

redis-cli BGREWRITEAOF && redis-cli INFO persistence | head
REPLICAOF host port (was SLAVEOF)

이 인스턴스를 다른 인스턴스의 replica 로 만듭니다(또는 REPLICAOF NO ONE 으로 승격).

redis-cli REPLICAOF redis-master 6379 && redis-cli REPLICAOF NO ONE

파이프라인 & 스캔

redis-cli ... < commands.txt

파이프라이닝: stdin 으로부터 명령을 한 라운드트립에 묶어 보내 배치에서 훨씬 빠릅니다.

--pipe 모드는 RESP 사용; < file.txt

printf 'SET k1 v1\nSET k2 v2\nGET k1\nGET k2\nINCR counter\n' | redis-cli --pipe | head
redis-cli --scan --pattern '...'

서버 측 커서 스캔 — KEYS 처럼 O(N) 으로 폭증하지 않습니다.

--scan --pattern p; --bigkeys / --memkeys / --hotkeys (샘플링)

redis-cli --scan --pattern 'session:*' | wc -l

진단

redis-cli --bigkeys / --memkeys

가장 큰 키 / 키당 메모리 찾기 — 샘플 기반이라 서버를 멈추지 않습니다.

redis-cli -h prod --bigkeys --i 0.01 | tee /tmp/bigkeys.log
redis-cli --latency / --latency-history

몇 샘플에 대한 실시간 지연 히스토그램(min / max / avg).

--latency; --latency-history -i 5; --intrinsic-latency N (OS 클럭 진단)

redis-cli -h prod --latency-history -i 5 > /tmp/lat.log & sleep 30; kill %1
redis-cli CLUSTER INFO / CLUSTER NODES

클러스터 상태: 슬롯, 노드 역할(master/replica), 상태.

redis-cli --cluster check 10.0.0.1:6379

치트시트 버전 1.0.0

Redis 6.2+ 대응