기본 연결 및 관리 명령어
quit: 현재 클라이언트 연결 종료
auth <password>: 인증을 위한 비밀번호 입력 (설정된 경우)
help <command>: 특정 명령어의 도움말 확인 (예: help quit)
데이터 지속성 제어
save: 현재 데이터를 동기식으로 디스크에 저장
bgsave: 백그라운드에서 비동기로 저장 시작
lastsave: 마지막 성공적인 저장 시점을 초 단위로 반환
shutdown: 모든 데이터를 디스크에 저장한 후 서버 종료
서버 모니터링 및 설정
info: Redis 서버 상태, 메모리 사용량, 연결 수 등 통계 정보 출력
monitor: 실시간으로 처리되는 모든 요청 로그 출력 (디버깅용)
slaveof <master_ip> <port>: 슬레이브 모드로 설정 (마스터와 동기화)
config get <parameter> / config set <parameter> <value>: 실행 중인 설정 변경
키 관리 명령어
exists <key>: 해당 키가 존재하는지 확인 (1: 존재, 0: 없음)
del <key>: 지정된 키 삭제
type <key>: 키의 데이터 타입 반환 (string, list, set, hash 등)
keys <pattern>: 패턴에 맞는 모든 키 조회 (예: keys user_*)
randomkey: 랜덤한 키 반환
rename <old_key> <new_key>: 키 이름 변경
dbsize: 현재 선택된 데이터베이스 내 키 개수 반환
expire <key> <seconds>: 키의 만료 시간 설정 (초 단위)
ttl <key>: 남은 만료 시간(초) 반환
select <index>: DB 인덱스 전환 (0~15까지 가능)
move <key> <db_index>: 현재 DB의 키를 다른 DB로 이동
flushdb: 현재 데이터베이스 전체 키 삭제
flushall: 모든 데이터베이스의 키 삭제
String 데이터 유형 작업
set <key> <value>: 문자열 값 설정
get <key>: 문자열 값 가져오기
getset <key> <value>: 기존 값 반환 후 새 값으로 교체
mget <key1> <key2> ...: 여러 키의 값을 한 번에 가져오기
setnx <key> <value>: 키가 없을 때만 설정 (아이템 삽입용)
setex <key> <seconds> <value>: 만료 시간과 함께 설정
mset <key1> <val1> <key2> <val2> ...: 다중 키-값 쌍 일괄 설정
msetnx <...>: 모든 키가 존재하지 않을 때만 일괄 설정
incr <key>: 정수형 값 1 증가
incrby <key> <increment>: 지정된 값만큼 증가
decr <key>: 정수형 값 1 감소
decrby <key> <decrement>: 지정된 값만큼 감소
append <key> <value>: 문자열 끝에 값 추가
substr <key> <start> <end>: 문자열 부분 추출 (0부터 시작)
List 데이터 구조 명령어
rpush <key> <value>: 리스트 끝에 항목 추가
lpush <key> <value>: 리스트 앞에 항목 추가
llen <key>: 리스트 길이 반환
lrange <key> <start> <stop>: 범위 내 항목 가져오기
ltrim <key> <start> <stop>: 범위 외 항목 삭제 (절단)
lindex <key> <index>: 인덱스 위치의 항목 반환
lset <key> <index> <value>: 인덱스 위치의 항목 수정
lrem <key> <count> <value>: 값과 일치하는 항목 삭제 (최대 count개)
lpop <key>: 리스트 앞에서 항목 제거 및 반환
rpop <key>: 리스트 끝에서 항목 제거 및 반환
blpop <key1> <key2> ... <timeout>: 블로킹 방식으로 앞 항목 제거 (대기 가능)
brpop <...> <timeout>: 블로킹 방식으로 뒤 항목 제거
rpoplpush <src> <dst>: src 리스트의 마지막 항목을 가져와 dst 리스트의 맨 앞에 추가
Set 집합 연산 명령어
sadd <key> <member>: 멤버 추가 (중복 불가)
srem <key> <member>: 멤버 제거
spop <key>: 랜덤 멤버 제거 및 반환
smove <src> <dst> <member>: 소스 집합에서 목적지로 멤버 이동
scard <key>: 집합 내 요소 수 반환
sismember <key> <member>: 멤버가 집합에 포함되어 있는지 확인
sinter <key1> <key2> ...: 교집합 계산
sinterstore <dst> <key1> <key2> ...: 교집합 결과를 새로운 집합에 저장
sunion <key1> <key2> ...: 합집합 계산
sunionstore <dst> <key1> <key2> ...: 합집합 결과 저장
sdiff <key1> <key2> ...: 차집합 계산 (key1 - key2)
sdiffstore <dst> <key1> <key2> ...: 차집합 결과 저장
smembers <key>: 집합 내 모든 멤버 반환
srandmember <key>: 랜덤 멤버 하나 반환
Hash 데이터 구조 명령어
hset <key> <field> <value>: 필드-값 쌍 추가
hget <key> <field>: 특정 필드의 값 가져오기
hmget <key> <field1> <field2> ...: 여러 필드 값 동시에 가져오기
hmset <key> <field1> <val1> ...: 여러 필드-값 쌍 일괄 설정
hincrby <key> <field> <increment>: 필드 값 증가 (정수)
hexists <key> <field>: 필드가 존재하는지 여부 확인
hdel <key> <field>: 필드 삭제
hlen <key>: 해시 내 필드 수 반환
hkeys <key>: 모든 필드 이름 목록 반환
hvals <key>: 모든 필드 값 목록 반환
hgetall <key>: 모든 필드-값 쌍 반환
고급 기능 적용
보안 설정
requirepass primos 를 redis.conf 에 추가하여 접속 시 비밀번호 필요 설정
- redis-cli -a primos 또는 접속 후
auth primos 명령 사용
마스터-슬레이브 복제 구성
트랜잭션 처리
multi: 트랜잭션 시작
- 다음 명령들은 큐에 저장됨
exec: 큐에 저장된 명령들 순차적으로 실행
discard: 트랜잭션 취소 (롤백)
- 오류 발생 시 일부 명령은 실행되며, 전체 롤백되지 않음 (2.6.7 버전 기준)
watch <key>: 키 변경 감시 → 변경 시 트랜잭션 실패 (옵티미스트릭 락)
지속성 저장 방식
- Snapshotting (RDB): 정기적으로 메모리 상태를 바이너리 파일(
dump.rdb)로 저장
- AOF (Append-Only File): 모든 명령어를 로그로 기록 → 재시작 시 재실행
- 둘 중 하나 또는 둘 다 사용 가능 (기본적으로 RDB 우선)
메시지 발행/구독
subscribe channel_name: 채널 구독
publish channel_name message: 메시지 발행
- 실시간 이벤트 기반 통신 가능
가상 메모리 설정 (비권장)
- VM 기능은 현대적 환경에서는 거의 사용되지 않음
- 대신 적절한 RAM 확보 및 최적화 권장
redis-cli 사용법
Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]
-h <hostname> # 서버 호스트 (기본: 127.0.0.1)
-p <port> # 포트 (기본: 6379)
-a <password> # 인증 비밀번호
-r <count> # 명령 반복 실행
-i <interval> # 반복 간격 (초 단위, 소수도 가능)
-n <db_index> # DB 인덱스 선택
-x # 마지막 인자를 STDIN에서 읽기
-d <delimiter> # 다중 블록 구분자
-c # 클러스터 모드 활성화
--raw # 원시 형식 출력
--latency # 지연 시간 측정 모드
--eval <script> # Lua 스크립트 실행
--help # 도움말 출력
--version # 버전 출력
사용 예시
cat /etc/passwd | redis-cli -x set mypasswd
redis-cli get mypasswd
redis-cli -r 100 lpush mylist x
redis-cli -r 100 -i 1 info | grep used_memory_human:
redis-cli --eval script.lua key1 key2 , arg1 arg2 arg3
# ',' 이후는 ARGV, 이전은 KEYS 배열
주요 활용 명령어
keys * : 모든 키 목록 조회
keys prefix_* : 접두사가 prefix_인 키 검색
flushdb: 현재 데이터베이스 비우기
flushall: 모든 데이터베이스 비우기