redis에 대해 알아보자!

redis에 대해 알아보자!

리덕스(remote dictionary server)

remote는 외부

dictionary는 hashmap과 같은 key,value

server는 서버이다.

database, cache, message broker

in-memoryt data structure store는 메모리 상의 데이터를 저장하는 서버

Supprots rich data structure는 다양한 자료 구조

Cache

나중에 요청에 대한 결과를 미리 저장했다가 빠르게 사용하는 것

cpu register

cpu cache

main memory(DRAM)

storage(ssd,hhd)

메모리의 계층 구조

밑으로 내려 올 수록 저렴하고 느리다

맥북으로 예를 들자면

12MB Cache Memory(SRAM)는 cpu Cache영역에 해당

엄청 빠르고 비싸고 용량이 작음

16GB DRAM은 Main memory(DRAM)에 해당

적당히 빠르고 비싸며 적당히 크고 휘발성을 가지고 있음

휘발성은 컴퓨터를 끄면 가지고 있는 내용에 대한 데이터들이 삭제

512GB SSD는 Storage(ssd,hhd)에 해당

비교적 느리고 저렴하며 엄청 크며 비휘발성

DB는Hdd,SSd

mainmemoryDRAM

기술이 발달하고 하드웨어가 커지다 보니

좀더 빠르고 쉽게 저장하고 데이터에 접근하면

어떨까에 대한 개념으로 나온 것이 REDIS 입니다.

데이터베이스보다 더 빠른 memory에 더 자주 접근하고 덜 자주 바뀌는 데이터를 저장하자라는 개념으로 나온 것이

In-memory database입니다.

redis collection(자료구조)

String

Java의 Map.entry와 동일한 구조(key,value)를 한쌍으로 구분

List

Java의 LinkdList와 동일한 구조

Set

Java의 hashSet과 동일한 구조

Sorted set

Java의 TreeSet과 동일한 구조

Hash

Java의 HashMap 혹은 Obejct와 동일한 구조

Java와 redis의 차이

hashMap에 저장해도 메모리 데이터베이스를 사용하는 것

서버가 여러대인 경우 Consistency의 문제 발생

실제로 서버에서는 서로 다른 데이터를 가지고 있기 때문에

세션 같은 경우를 자바 객체 저장하거나 다른 서버를 해당 새션이 없기 때문에 문제가 발생

Multi-threadede 환경에서 Race Condition 문제 발생

Race Condition는 여러개의 Theard가 결합하는 것

Context Switching에 따라 원하지 않는 결과 발생

Redis는

기본적으로 single Thread이며

자료구조는 atomatic, critical section에 대한 동기화

서로다른 transaction read/write동기화를 함으로써 원하지 않는 결과를 방지

critical seciton는 동시에 프로세스가 여러개가 접근하면 안되는 영역

어디서 사용하나요?

single server

atomic 자료구조와 cache

여러 서버에서 같은 데이터를 공유할때 사용

atomic 한 자료구조와 cache라는 기능을 사용하기 위해

주의 해야 할점

single tread 서버 이므로 시간 복잡도 고려

in-memory 특성상 메모리 파편화 가상 메모리등의 이해가 필요

왜 싱글 스레드를 사용하는가?

Io-Bound

cpu 연산보다 메모리

simple

네트워크로 부터 명렁어를 받아서 처리

파편화

메모리를 할당 받고 해체하는 과정에서 부분 부분 비어있는 공간이 생김

크기가 훨씬 커서 할당 할 수 있는 메모리는 여기 밖에 없기 때문에

피지컬 메모리에서 사용하지 못하는 부분이 생김

이런 문제 때문에 실제 사용하는 것 보다 많이 사용하는 것 처럼 컴퓨터가 인식

이런 점으로 인해 redis는 적당한 여유공간에 메모리 사용

전체 프로세스를 전부 다 사용하지 않고

일부만 메모리에서 사용하고 덜 쓰이는 프로세스들은

디스크에 저장했다가 필요할때마다 사용하도록 했다.

from http://qweiop3334.tistory.com/50 by ccl(A) rewrite - 2021-11-05 21:27:31