쏭의 개발 블로그
[DB] Redis 본문
1. Redis란?
Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈소스 기반의 비관계형 데이터베이스 관리 시스템(DBMS)
- in-memory로 cache 방식으로 빠르게 원하는 데이터를 가져올 수 있는 방식의 DB
- in-memory 방식
- 데이터를 디스크에 저장하는 것이 아닌 RAM에 저장하는 방식
- (장점) 디스크 스캐닝이 필요없어 매우 빠름
- (단점) RAM : 휘발성 → 백업 과정이 존재
- 캐싱이 가능
- → 실시간 채팅에 적합하며 세션공유를 위해 세션 클러스터링에도 활용됨
데이터 타입
- 문자열 (text, binary data)
- 가장 일반적인 key-value 구조의 형태
- 집합 (String 집합)
- 여러개의 값을 하나의 value에 넣을 수 있음
- 정렬된 집합(sorted set)
- 빠르게 데이터를 가져올 수 있어 많은 요청에 대한 빠른 응답 처리에 용이
- 해시
- 리스트 (양방향 연결리스트도 가능)
- array 형식의 데이터 구조
- 처음과 끝에 데이터를 넣고 빼는것은 빠르지만 중간에 데이터를 삽입하는 것은 어려움
2. Redis 백업
(1) snopshot(RDB)
특정 지점을 설정하고 디스크에 백업
- 메모리에 존재하는 모든 데이터를 파일로 가져와 한꺼번에 쓰는 방식
- (장점) 특정 시점으로 데이터를 복구하는 것이 가능
- (단점) Redis에 장애가 발생했을 때 백업 시점을 제외한 중간 시점에서 발생한 데이터는 유실될 수 있음
(2) AOF(Append Only File)
명령(쿼리)들을 저장해두고 서버가 셧다운되면 재실행해서 다시 만들어 놓는 것
- 기간을 정해두는 것이 아닌 write 요청이 생기는 순간 바로 백업이 되어지는 방식
- Redis 서버에 장애가 생겼을 때 로그 파일에 기록된 쓰기 작업을 그대로 따라해 이전 상태로 복구
- RDB 방식에 비해 백업데이터가 크고 서버 자원을 많이 잡아먹는다.
⇒ snopshot 방식과 AOF 방식을 적절히 혼재해서 사용할 것을 권장
https://gyoogle.dev/blog/computer-science/data-base/Redis.html
https://wildeveloperetrain.tistory.com/21
'DB' 카테고리의 다른 글
[DB] 저장 프로시저 (0) | 2023.02.11 |
---|---|
[DB] SQL injection (0) | 2023.02.11 |
[DB] Transaction Isolation Level 트랜잭션 고립수준 (1) | 2023.02.01 |
[DB] 트랜잭션(Transaction) (0) | 2023.01.31 |
[SQL] 데이터베이스 - TCL (0) | 2023.01.31 |