Redis 핵심 명령어 및 운영 가이드

기본 연결 및 관리 명령어

  • 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>: 모든 필드-값 쌍 반환

고급 기능 적용

보안 설정

  1. requirepass primosredis.conf 에 추가하여 접속 시 비밀번호 필요 설정
  2. redis-cli -a primos 또는 접속 후 auth primos 명령 사용

마스터-슬레이브 복제 구성

  • 슬레이브 서버에서 다음 설정:
    slaveof 192.168.15.128 6379
    masterauth primos
  • 방화벽 확인: ufw allow 6379 (Ubuntu 기준)
  • 상태 확인: info replication

트랜잭션 처리

  • 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: 모든 데이터베이스 비우기

태그: Redis NoSQL 데이터베이스 메모리 저장소 트랜잭션

5월 24일 04:14에 게시됨