티스토리 뷰
반응형
[10분 테코톡] 디디의 Redis
- Redis 개요
- Cache 개념
- Redis 자료구조
- Redis 주의사항
Redis 개요
- Remote dictionary server 입니다.
Remote는 외부
dictionary는 Key-Value 형식의 자료구조 DB이
server 서버
즉, 외부에서 dictionary 저장하는 자료구조 서버라고도 할 수 있습니다.
여기서 Quiz를 32bit CPU Int 최대값은? 21억~ Key값이 너무 많아져서 쿠팡에서 오류가 발생했다 하여 int에서 long으로 데이터형식을 변환했다.
궁금? Redis는 휘발성이 가능하면서 빠른 DRAM에 Cache를 저장해놓지않았나? 왜 CPU에서 오류가 난걸 예시로 드는걸까? Master랑 Slack 서버를 말하는걸까?
Redis란 아래와 같이 설명할 수 있습니다.
- Remote dictionary server 즉, 외부에 사전으로 데이터 저장하는 서버라고합니다.
- In-memory Data Structure Store 즉, 메모리상에 데이터를 저장하는 Store입니다.
- Database
- Cache
- 많은 서버로 이루어진 웹서버에서 Message broker역할을 합니다.
- Supports rich data structure 즉, 다양한 자료를 제공한다.
Cache 개념
자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킵니다.
그렇다면 어디에 저장해놓는것이 가장 빠를까요?
아래 그림은 메모리 계층구조를 나타냅니다.
위로갈수록 빠르고 비싸고
아래로 갈수록 느리고 저렴합니다
- CPU Register : 겁나 빠르고 비쌈
- Cache
- Main DRAM : 적당히 빠르고 적당히 비싸며 컴퓨터 껏다 키면 데이터가 휘발성됩니다
- 하드디스크(SSD, HDD) : 비교적느리고 저렴하지만 저장공간이 크며 비휘발성입니다.
기술이 점차 발달하여 하드디스크영역이 아닌, 조금더 빠르게 데이터에 접근하고자 나온게 Redis입니다.
즉, 자주 접근하고, 데이터의 변동성이 낮은 데이터들을 Database보다 더 빠르게 저장하자 해서 나온 개념이 In-memory Database(Cache)입니다.
Redis는 In-memory 다양한 자료구조 Collections를 제공합니다.
redis 는 아래 그림과 같이 key-value 형태로 데이터를 저장됩니다. 여기서 value는 아래와 같은 다양한 Type들이 들어옵니다. * String, Bitmap, Hash, List, Set, Sorted Set, Geospatial Index, Hyperloglog, Stream
key 는 문자열이며, 최대 512MB 까지 가능하고 key 를 가독성있게 잘 설계하는 것이 중요합니다.
)
장점1) Redis를 사용하면 Single Thread이므로 RaceCondition에 빠질 가능성이 낮다.
- Thread란
- 프로세스 내에서 프로그램 명령을 실행하는 기본 단위
- Single Thread란?
- 프로세스에서 하나의 스레드 실행
- Multi Thread란?
- 프로세스 내에서 여러개의 프로그램을 다수의 단위로 나누어 실행
- Race Condition 이란?
- 두개 이상의 Thread가 실행될 때, 접근 순서(Context Switching)에따라 그 실행 결과가 상황에 따라서 달라지는 상황
장점2) Redis를 사용하면 atomic을 보장해줍니다.
- atomic (원자성)
- Critical Section(여러개의 프로세스가 접근하면 안되는 영역)
- 서로 다른 Transaction Read/Write를 동기화한다.
단점1) 오래걸리는 O(N)명령어 실행 시 다른 명령에 영향을 줄 수도 있습니다.
- O(N) 명령어는 사용 자제 : KEYS, FLUSHALL, FLUSHDB, DEL 등
어디에서 사용해야하나요?
- 여러 서버에서 같은 데이터를 공유할 경우
Redis 사용 시 주의사항
- Single Thread 서버 이므로 시간복잡도를 고려해야한다.
- O(N)같은 시간처리가 오래 걸리는 명령어의 사용은 자제한다.
- 출처: https://www.youtube.com/watch?v=Gimv7hroM8A
- [10분 테코톡] 디디의 Redis
- 출처: https://sjh836.tistory.com/178 [빨간색코딩]
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ngnix
- docker
- 영속성 컨텍스트
- mvn
- container
- 자바8
- 람다
- 최종연산
- stream
- NPM
- Vuex
- nginx
- lambda
- map
- BeanFactory
- MAC
- Intellij
- install
- elasticsearch
- JPA
- 스트림
- java
- vscode
- AnnotationConfigApplicationContext
- webpack
- 차이
- ApplicationContext
- 중간연산
- springboot
- Vue
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함