우아한 테크톡 관련된 유튜브 강의 정리 내용입니다.
정확한 내용을 학습하고 싶으면 강의 링크를 참고하시면 됩니다.
Redis
Remote → 외부
dictionary → HashMap Key-Value 형태
server → 서버
메모리 기반의 키-값 구조 데이터 관리 시스템이며,
모든 데이터를 메모리에 저장하고 조회하기에 빠른 Read, Write 속도를 보장하는 비 관계형 데이터베이스이다.
Cache
나중의 요청에 대한 결과를 미리 저장했다가 빠르게 사용하는 것
In-memory Database(Cache)
Database보다 더 빠른 Memory에 더 자주 접근하고 덜 자주 바뀌는 데이터를 저장합니다.
Data Structure(데이터 형식)
Redis Collection
- String
- List
- Set
- Sorted Set
- Hash
Java - Redis
서버가 여러대인 경우 Consistency의 문제가 발생할 수 있습니다.
Multi-Threaded 환경에서 Race Condition
Race Condition
Race Condition 이란 여러 개의 Thread가 경합하는 것입니다.
Context Switching에 따라 원하지 않는 결과가 발생합니다.
Race Condition 해결 방법으로
Redis는 기본적으로 Single Threaded 로 하고
Redis 자료구조는 Atomic Critical Section에 대한 동기화를 제공합니다.
또한 서로 다른 Transaction Read/Write를 동기화 합니다.
주의해야 할 점
Single Thread 서버 이므로 시간 복잡도를 고려해야 합니다.
In-memory 특성상 메모리 파편화, 가상 메모리 등의 이해가 필요합니다.
Single Threaded
- Event Driven (비 동기)
- IO-bound Process
- Context Switching의 효율이 적다
- Single Threaded
Memory 관리
- 메모리 파편화
- 가상메모리 Swap
- Replication - Fork
메모리 파편화
메모리 페이지 사이즈가 4096 일때, 우리가 1byte 만 달라고 요청하더라도 실제로 jemalloc 은 4096 byte 를 가져와야한다. jemalloc 은 메모리를 페이지 단위로 반환하기 때문이다.
추가적으로
Redis를 저장소 처럼 → Redis Persistent , RDB, AOF
Redis의 메모리는 제한되어있기 때문에 추가적으로 Scale out, Back up을 해야 함 → Redis Cluster
부하분산 → Constant Hashing
Data Grid -> Spring Gemfire, Hazlecast
장점
- 리스트, 배열과 같은 데이터를 처리하는데 유용하다.
- 리스트형 데이터 입력과 삭제가 MySQL에 비해서 10배정도 빠르다고 한다.
- 메모리를 활용하면서 영속적인 데이터 보존
- Redis Server는 1개의 싱글 쓰레드로 수행되며, 따라서 서버 하나에 여러개의 서버를 띄우는 것이 가능하다.
참고
https://velog.io/@hyeondev/Redis-%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C
'Computer Science > 테크톡 정리' 카테고리의 다른 글
[CS 정리] 트랜잭션 정리 (0) | 2021.09.14 |
---|---|
[CS 정리] 프레임워크, 라이브러리, API 정리 (0) | 2021.09.09 |
[CS정리] RESTful 정리 (0) | 2021.09.08 |
[CS 정리] JDBC, SQLMAPPER, ORM (0) | 2021.08.24 |
[CS 정리] OSI 7 Layer (0) | 2021.08.23 |