티스토리 뷰
PART 1 |
Redis(REmote DIctionary Server) |
- 오픈 소스 소프트웨어이다.
- 디스크가 아닌 메모리 기반의 데이터 저장소이다.(In-Memory data structure store)
=> 처리속도가 매우 빠르다. - NoSQL & Cache 솔루션이며 메모리 기반으로 구성된다.
- 명시적으로 삭제, Expire를 설정하지 않으면 데이터는 삭제되지 않는다.
=>영구적 보존 - 여러대의 서버 구성이 가능하다.
- 데이터베이스로 사용될 수 있으며 Cache로도 사용될 수 있는 기술이다.
- 다양한 데이터 구조체(Message Queue, Shared memory, Remote Dictionary)를 지원한다.
- 안전한 데이터의 보관과 백업을 위해 두 가지 방법을 제공한다.(다른 서버의 메모리에 실시간으로 복사본 남기기, 디스크에 직접 저장)
- 리스트, 배열과 같은 데이터를 처리하는데 빠르고 유용하다.(mysql보다 10배 정도 빠른 성능)
- 메모리를 활용하면서 영속적인 데이터 보존이 가능하다.
- 스냅샷(기억장치)기능을 제공하여 메모리의 내용을 파일로 저장하여 해당 시점으로 복구할 수 있다.
- 1개의 싱글 쓰레드를 사용한다. => 성능저하가 올 수 있다.
- 여러 대의 서버 구성이 가능하다 => 분산 캐시 서버를 구축할 수 있다.
- 다양한 API를 지원한다.
3# Redis의 단점
- 메모리 파편화가 발생하기 쉽다.(메모리를 2배로 사용, Redis는 싱글 쓰레드)
- 대규모 데이터에 대한 응답속도의 불안정성
4# 데이터 저장 방식
- 데이터 저장 방식 : key-value 형태
- 데이터 유형 : String, List, Set, Sorted Set, Hashes
- 예제
데이터 유형 |
key |
value |
|
String |
key |
xxx abe .... |
단순 키/문자열 저장 |
|
key2 |
xxx |
|
List |
list-key |
xxx,abc,123,xxa |
linked-list 형태의 값 저장 |
|
list-key2 |
abc,fff,xx,ggg |
|
Set |
set-key |
xxx,xxx,xx,abc |
값의 집합, 중복 허용 안함 |
Sorted Set |
ss-key |
abc,bbb,ccc,dd |
정렬된 값의 집합, 중복허용x |
Hashes |
hashes-key |
name:123 |
값이 key/value형식 |
5# CRUD에 따른 Redis 데이터 처리
- Read 요청시
1. 방문자, 사용자의 새로운 데이터 서버에 요청
2. Redis 서버에서 요청 데이터가 있는지 확인
3. 데이터가 존재하는 경우 만료 여부 확인 후 이 정보를 반환
4. 정보를 반환한 경우 시간을 현재로 업데이트 후 종료
5. 데이터가 만료되었거나 없는 경우 삭제 후 주 서버에 요청
6. 주 서버에서 받은 데이터를 캐싱, 데이터베이스에 저장
7. 이 값을 방문자에게 반환 후 종료
CUD(Create, Update, Delete) 요청시
1. 방문자가 CUD를 서버에 요청
2. CUD 요청을 주서버에 반영하여 업데이트
3. 변경된 데이터 값을 캐싱데이터인 Redis에서 찾아 삭제 후 종료
6# Memcached와의 차이
Memcached : 인메모리 DB중 하나, 캐시 솔루션
Redis | Memcached |
데이터를 메모리와 디스크에 모두 저장 (디스크에는 회복용 로그 저장) | 데이터를 메모리에만 저장 |
명시적으로만 데이터 삭제 가능 | 메모리 공간이 부족할 시 LRU알고리즘으로 데이터를 자동 삭제 |
서비스의 특정 기능을 위한 목적으로 캐시데이터 사용 | 통신 속도를 향상시키기 위한 목적 |
[Reference] https://goodgid.github.io/Redis/ https://walldaydream.tistory.com/entry/Redis-%EB%9E%80 https://chickenpaella.tistory.com/77 https://webisfree.com/2017-10-26/redis-%EB%A0%88%EB%94%94%EC%8A%A4%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%BA%90%EC%8B%B1%EC%84%9C%EB%B2%84-%EC%9A%B4%EC%98%81%ED%95%98%EA%B8%B0
'DB' 카테고리의 다른 글
[Postgresql] timestamp vs timestamptz 비교 & 테스트 (2) | 2022.02.14 |
---|---|
[MySQL]PK가 중복일 때 INSERT : REPLACE INTO vs ON DUPLICATE KEY UPDATE (4) | 2019.12.10 |
- Total
- Today
- Yesterday
- 제우스8
- AWS
- API Gateway
- kafka without zookeeper
- jeus8
- php
- docker
- 도커
- 넥서스 파일 보관주기
- s3
- 보관주기
- cleanup policies
- 카프카
- kafka with raft
- 네트워크
- 제우스8.5
- db 두개
- 티스토리챌린지
- volatile
- SynchronousQueue
- 넥서스 보관주기
- 오블완
- 스레드 동기화
- 쓰레드 변수
- multiple datasource
- cleanup policy
- 주키퍼 없는 카프카
- jeus8.5
- 다중 데이터소스
- 제우스 로그
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |