일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- docker
- Til
- 세션(Session)
- flask
- 아티클 스터디
- 연습
- NoSQL
- nginx
- git
- github
- 파이썬
- 티스토리챌린지
- 자료구조
- JWT
- redis
- 장고
- 도커
- ERD
- 개발공부
- Doker
- CS
- 코딩테스트
- 쿠키(cookie)
- web
- viewsets
- Wil
- SQL
- django
- Python
- 오블완
- Today
- Total
SteadyDrills
레디스 명령어 모음 본문
241223
목차
레디스 명령어 모음
레디스는 기본적으로 0부터 15까지 총 16개의 데이터베이스를 제공하며, 키-값 저장소로, 데이터를 효율적으로 저장하고 관리할 수 있는 다양한 명령어를 제공한다.
데이터 베이스 명령어
명령어 | 기능 | 영향 범위 | AOF기록 |
SELECT | 데이터베이스 선택 | 현재 클라이언트 | 부분적 |
FLUSHDB | 현재 선택된 데이터베이스의 모든 데이터 삭제 | 현재 선택된 데이터베이스 | 기록 |
FLUSHALL | 모든 데이터베이스의 모든 데이터 삭제 | 모든 데이터베이스 | 기록 |
#DB명령어 예시
SELECT <index> #<index>데이터베이스 선택
FLUSHDB #현재 선택된 데이터베이스의 모든 데이터 삭제
FULSHALL #모든 데이터베이스의 모든 데이터 삭제
*AOF란?
AOF는 Redis는 기본적으로 데이터를 메모리에 저장하기 때문에 서버가 종료되거나 전원 공급이 중단되면 데이터가 손실될 수 있다. 그에 따라 데이터의 영속성을 보장하기 위한 메커니즘 중 하나로 AOF가 있다.
AOF는 발생하는 모든 쓰기 작업(데이터 추가, 수정, 삭제)을 로그 파일에 기록하는 방식으로, 데이터베이스의 트랜잭션 로그와 유사하게 작동한다. 각 쓰기 명령이 실행될 때마다 해당 명령이 파일에 추가(append)되기 때문에 "Append-Only File"이라고 한다.
※장점
높은 데이터 안정성(데이터 손실 가능성이 훨씬 적다. 거의 모든 쓰기 명령을 기록하기 때문에 저장된 모든 데이터를 복구할 수 있다.
※ 단점
모든 쓰기 명령을 기록하기 때문에 파일 크기가 더 클 수 있다. 또한 AOF는 파일에 기록된 명령들을 순차적으로 실행해야 하므로 복구 속도가 더 느릴 수 있다.
*RDB (Redis Database) 스냅샷
RDB 스냅샷은 특정 시점에 메모리에 있는 모든 데이터를 디스크에 바이너리 파일 형태(0과 1의 이진수로 구성)로 저장하는 방식이다. 현재 메모리 상태를 순간적으로 기록하여 파일로 저장하는 것과 같으며, 이 파일은 보통 dump.rdb라는 이름으로 저장된다.
- 특정 시점 스냅샷: 주기적으로 또는 특정 조건이 충족되었을 때 스냅샷이 생성된다.
ex) 시간(5분) or 키의 변경 수(500개) - 포크 (Fork) 방식: 스냅샷을 생성할 때 Redis는 포크라는 운영체제 기능을 사용하여 자식 프로세스를 생성한다. 자식 프로세스는 메모리 데이터를 디스크에 저장하는 작업을 수행하고, 부모 프로세스는 계속해서 클라이언트 요청을 처리한다. 이를 통해 스냅샷 생성 중에도 Redis 서비스가 중단되지 않는다.
※장점
복구 속도가 빠르고 바이너리 파일 형태로 저장되기 때문에 파일크기가 작다.
포크 방식을 사용하여 스냅샷을 생성하기 때문에 Redis 서버의 성능에 미치는 영향이 비교적 적다.
※ 단점
마지막 스냅샷 이후 데이터가 손실될 수 있다.
최신 데이터를 실시간으로 반영하기 어렵다.(주기가 정해져 있기 때문)
기본 키(Key) 명령어
명령어 | 기능 | 영향 범위 | AOF |
KEYS | 특정 패턴과 일치하는 키 조회 | 특정 패턴과 일치하는 키 | x |
DEL | 특정 키 삭제 | 지정된 키 | O |
EXISTS | 키 존재 여부 확인 | 지정된 키 | X |
EXPIRE | 키에 TTL (만료 시간) 설정 (초 단위) | 지정된 키 | O |
TTL | 키의 TTL (남은 만료 시간) 확인 (초 단위) | 지정된 키 | X |
RENAME | 키 이름 변경 | 변경되는 키 | O |
TYPE | 키의 데이터 타입 확인 | 지정된 키 | X |
#기본(keys) 명령어
KEYS * # 현재 데이터 베이스의 모든 키값 조회
SET mykey "hello" # mykey에 "hello" 값 설정
DEL mykey # mykey 삭제 (결과: (integer) 1)
EXISTS mykey # mykey가 존재하는지 확인 (결과: (integer) 0)
SET anotherkey "value" # anotherkey에 "value" 값 설정
EXPIRE anotherkey 10 # anotherkey의 만료 시간을 10초로 설정 (결과: (integer) 1)
TTL anotherkey # anotherkey의 남은 만료 시간 확인 (결과: 10 이하의 정수)
RENAME anotherkey newkey # anotherkey를 newkey로 이름 변경 (결과: OK)
TYPE newkey # newkey의 타입 확인 (결과: string)
문자열 명령어
명령어 | 기능 | 영향 범위 | AOF |
SET | 키에 값 설정 | 지정된 키 | O |
GET | 키의 값 가져오기 | 지정된 키 | X |
APPEND | 키의 기존 값에 문자열 추가 | 지정된 키 | O |
INCR | 키의 값을 1씩 증가 | 지정된 키 | O |
DECR | 키의 값을 1씩 감소 | 지정된 키 | O |
MSET | 여러 키-값을 한꺼번에 설정 | 여러 지정된 키 | O |
MGET | 여러 키의 값 가져오기 | 여러 지정된 키 | X |
SET mykey "hello" # mykey에 "hello" 값 설정 (결과: OK)
GET mykey # mykey의 값 가져오기 (결과: "hello")
APPEND mykey " world" # mykey에 " world" 추가 (결과: (integer) 11)
GET mykey # mykey의 값 확인 (결과: "hello world")
SET counter 10 # counter에 숫자 10 설정 (결과: OK)
INCR counter # counter 값 1 증가 (결과: (integer) 11)
DECR counter # counter 값 1 감소 (결과: (integer) 10)
MSET key1 "value1" key2 "value2" # key1, key2에 값 동시 설정 (결과: OK)
MGET key1 key2 # key1, key2의 값 동시 가져오기 (결과: "value1", "value2")
MGET non_existent_key # 존재하지 않는 키 가져오기 (결과: (nil))
레디스 공식 문서: https://redis.io/docs/latest/commands/
Commands
redis.io
'웹개발' 카테고리의 다른 글
장고(Django) ViewSets (3) | 2025.01.06 |
---|---|
웹의 세션, 쿠키, 캐시 (0) | 2025.01.04 |
장고의 세션 저장 원리 (0) | 2024.12.19 |
도커 파일 구성 (0) | 2024.12.16 |
Docker 기초 명령어 정리 (0) | 2024.12.13 |