일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 우선순위큐자바
- 객체지향solid
- 팀프로젝트
- Programmers도둑질
- 모놀리틱 아키텍처
- 자바Comparator
- 자바 가비지컬렉션
- 자바리스트정렬
- 객체지향추상화
- 자바스크립트reduce
- 자바foreach
- openvidu
- 객체지향다형성
- 자바스크립트map
- Programmers가장큰수
- 자바stream
- 자바filter
- node의존성주입
- 프로그래머스도둑질
- 프로젝트회고
- webrtc
- 자바reduce
- 자바Comparable
- 자바스크립트filter
- 자바배열정렬
- 스프링핵심요소
- 도둑질자바
- 프로그래머스가장큰수
- 자바스크립트foreach
- 클라우드타입
- Today
- Total
I'm pine thank you and you?
[DB] Redis 개념, 특징 본문
Redis
Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 비관계형 데이터 베이스 관리 시스템(DBMS)
인메모리 데이터 베이스
인메모리 데이터 베이스를 쓰는 이유는?
데이터 베이스는 데이터를 물리 디스크에 직접 쓰기 때문에 서버에 문제가 발생하여 다운되더라도 데이터가 손실되지 않는다.
하지만, 매번 디스크에 접근해야 하기 때문에 사용자가 많아질수록 부하가 많아져서 느려질 수 있다.
이때, 보조저장소로 사용할 수 있는 것이 Redis이다.
Redis는 디스크가 아닌 RAM에 데이터를 저장한다.
RAM은 캐시 메모리로 쓰인다.
(캐시는 한번 읽어온 데이터를 임의의 공간에 저장하여 다음에 읽을 때는 빠르게 결괏값을 받을 수 있도록 도와주는 공간)
때문에 DB의 부하를 줄이고 서비스의 속도도 느려지지 않는 장점이 있어 기존의 DB와 함께 +a로써 보조저장소로 쓰인다.
특징
- Key, Value 구조이기 때문에 쿼리를 사용할 필요가 없다.
- 다양한 형태의 자료 구조를 지원(String, Set, Sorted Set, List)
- Single Threaded
싱글 스레드는 한 번에 하나의 명령만 처리할 수 있다.
그렇기 때문에 중간에 처리 시간이 긴 명령어가 들어오면 그 뒤에 명령어들은 모두 앞에 있는 명령어가 처리될 때까지 대기가 필요하다.
주의할 점
서버에 장애가 발생했을 경우 그에 대한 운영 플랜이 꼭 필요
👉 인메모리 데이터 저장소의 특성상 서버에 장애가 발생했을 경우 데이터 유실이 발생할 수 있기 때문
싱글 스레드의 특성상 한 번에 하나의 명령만 처리할 수 있다.
👉 처리하는데 시간이 오래 걸리는 요청, 명령은 피한다.
분산 락
Load Balancer: 여러 개의 객체가 있을 때 부하를 나누어주는 소프트웨어
전부 lock을 건 상태에서 lock 해제를 먼저 한 하나의 서비스만 동작하도록 하는 것
AWS에서 사용하기
ElastiCache라는 서비스로 제공
EC2에서 자체 관리하는 Redis를 설치해서 사용하는 것이 가능
ElastiCache는 동일한 VPC내에서만 접근 가능하다.
'CS' 카테고리의 다른 글
[JAVA] Garbage Collector 개념, 알고리즘, 원리 (0) | 2023.06.19 |
---|---|
객체 지향 프로그래밍에 대해서 (1) | 2023.06.06 |
WebRTC가 무엇일까? (용어, 샘플, openvidu) (0) | 2023.03.04 |
[아키텍처] MSA / 멀티모듈 단일프로젝트? 단일모듈 멀티프로젝트? (0) | 2023.02.12 |
[디자인 패턴, JAVA] Singleton Pattern(싱글톤 패턴) 정의, 목적, 용도 (0) | 2023.02.09 |