-
(9) RedisCS 지식/○ Database 2021. 7. 10. 23:55
1. Redis
1-1) 정의
레디스(Redis)는 메모리 기반의 Key/Value Store
- 리스트, 해시, 셋 정렬된 셋 등 여러 형식의 자료구조를 지원
[Redis 자료구조 예시▼]
더보기1. String
- 일반적인 문자열로 최대 512mbyte 길이까지 지원한다. Text 문자열뿐만 아니라 Integer와 같은 숫자나 JPEG 같은 Binary File까지 저장할 수 있다.
2. Set
- set은 String의 집합이다. 여러 개의 값을 하나의 Value 내에 넣을 수 있다고 생각하면 되며 블로그 포스트의 태그(Tag) 등에 사용될 수 있다. 재미있는 점은 set 간의 연산을 지원하는데, 집합인 만큼 교집합, 합집합, 차이(Differences)를 매우 빠른 시간 내에 추출할 수 있다.
3. Sorted sets
- set에 “score”라는 필드가 추가된 데이터 형으로 score는 일종의 “가중치” 정도로 생각하면 된다. sorted set에서 데이터는 오름차순으로 내부 정렬되며, 정렬이 되어있는 만큼 score 값 범위에 따른 쿼리, top Rank에 따른 query 등이 가능하다.
4. Hash
- hash는 value 내에 field/string value 쌍으로 이루어진 테이블을 저장하는 데이타 구조체이다. RDBMS에서 PK 1개와 string 필드 하나로 이루어진 테이블이라고 이해하면 된다.
5. List
- list는 string들의 집합으로 저장되는 데이터 형태는 set과 유사하지만, 일종의 양방향 Linked list라고 생각하면 된다. List 앞과 뒤에서 PUSH/POP 연산을 이용해서 데이터를 넣거나 뺄 수 있고, 지정된 Index값을 이용하여 지정된 위치에 데이터를 널거나 뺄 수 있다.
1-2) 특징
(a) 메모리상 동작
“REmote DIctionary System”의 약자
- NoSQL DBMS로 분류되기도 하고, memcached와 같은 In memory 솔루션으로 분리 되기도 함
- 일반적인 db가 디스크에서 값을 읽어와 ram에 올리는 과정이 필요없기 때문에 빠르다는 장점이 있음
(b) 캐싱
캐싱이 가능하여 실시간 채팅에 적합하며, 세션 공유를 위해 세션 클러스터링 등에도 활용
(c) Memcached 와 차별성
같이 RAM을 사용하는 구조이지만 이들은 value가 Object인 반면
redis는 key에 대한 value 값으로 자료구조를 가지는 특징
1-3) 사용방식
- 주로 로그인 기능에 사용됨
- 메모리에 상주하면서 RDBMS의 캐시 솔루션으로 주로 사용
- 인스타그램, 라인, StackOverflow, 블리자드 등 여러 소셜 서비스에서 사용하는 검증된 오픈소스 솔루션
1-4) 휘발성에 대한 대처
RAM은 주메모리 물리적 특성상 휘발성이기 때문에, Redis에는 백업 과정이 있음
- Snap-shot
- 특정 지점을 설정하고 디스크에 백업
- 스냅샷은 RDB에서도 사용하고 있는 어떤 특정 시점의 데이터를 DISK에 옮겨 담는 방식
(Blocking 방식의 SAVE와 Non-blocking 방식의 BgGSAVE 방식이 있음) - AOF(Append only file)
- 명령(쿼리- write/upate) log 들을 파일에 저장해두고
서버가 문제로 인해 다시 시작하면 명령어들을 재실행하여 데이터를 복구하는 것
> Redis 권장 사항은, Snap-shot으로 주기적으로 백업을 한 후
다음 Snap-shot 직전 까지는 AOF로 백업하는 방식
참조
https://gyoogle.dev/blog/computer-science/data-base/Redis.html
https://lygggg.github.io/blog/Redis/
반응형'CS 지식 > ○ Database' 카테고리의 다른 글
(8) 트랜잭션 격리 수준 (0) 2021.07.07 (7) DB Transaction (0) 2021.07.07 (6) Index (0) 2021.07.03 (5) SQL Anomaly (0) 2021.07.03 (4) SQL vs NO-SQL (0) 2021.07.02