분류 전체보기

🗂️ 개인프로젝트/IDOL

[개인프로젝트/IDOL] 3. 사용자를 대기 큐에 등록하기

1. flow 모듈 설정build.gradleplugins { id 'java' id 'org.springframework.boot' version '3.2.6' id 'io.spring.dependency-management' version '1.1.5'}group = 'me.progfrog.idol'version = '0.0.1-SNAPSHOT'java { toolchain { languageVersion = JavaLanguageVersion.of(17) }}repositories { mavenCentral()}dependencies { implementation 'org.springframework.boot:spring-boot-starter-we..

🗂️ 개인프로젝트/IDOL

[개인프로젝트/IDOL] 2. 레디스 셋팅

1. Docker로 redis 컨테이너 실행하기docker run -d -p 6379:6379 --name idol-redis redis:6.2버전은 redis 6.2 사용백그라운드로 실행하고, 호스트 6379 포트에 컨테이너 6379 포트를 포트포워딩컨테이너 이름은 idol-redis로 지정 [Redis] 어바웃 레디스1. Redis 란? [백엔드/기타] 인메모리 데이터베이스1. 인메모리 데이터베이스(in-memory database)메모리에 데이터를 적재하여 활용하는 데이터베이스 인메모리 데이터베이스 주요 특징1. Millisecond respoprogfrog.tistory.com 2. 레디스 동작 확인application.propertiesspring.data.redis.host=127.0.0.1s..

🖥️ 백엔드/Redis

[Redis] 트랜잭션

1. 트랜잭션 종류HTTP 프로토콜에 대해 웹 정보 교환Http Request, Http Response를 하나로 묶어서 Http Transaction이라고 부른다.일렬의 쿼리를 묶어서 처리하는 것RDB의 Transaction은 ACID라는 주요 특징을 가지고 있다.데이터 정합성과 일관성을 매우 높은 수준으로 유지할 수 있다.Redis에서의 Transaction 또한 여러 개의 명령들에 대해 내부 큐에 모아두게 되고, 트랜잭션 완료를 전달하면 일련의 명령들을 한 번에 실행시키는 처리를 말한다.트랜잭션이 완료되기 전까지는 해당 명령들은 다른 요청들과 격리되는 것이 특징이다.1번 클라이언트 명령에서 key1에 대해 SET 명령어가 있더라도, 트랜잭션이 완료되지 않았다면 2번 클라이언트에서 key1을 조회하더..

🖥️ 백엔드/Redis

[Redis] Data types

Key와 ValueKeybinary와 text 저장 가능ex) "name", "123", "#!:()"하나의 Key에 대해서 최대 512MB까지 설정이 가능 ValueStringsListsSetsSorted setsHashesGeospatialBitmap Key 관련 명령어SET key value특정 key에 value를 설정이미 key가 존재하면 기존 값을 덮어씀GET key특정 key의 값을 가져옴key가 존재하지 않으면 nil을 반환DEL key [key ...]하나 이상의 key를 삭제함성공적으로 삭제된 key의 수 반환동기적으로 삭제 진행데이터를 모두 삭제하고 난 뒤에 응답이 온다.큰 데이터 구조를 삭제할 때 메모리 해제에 시간이 걸리기 때문에, 삭제 작업이 완료될 때까지 블로킹이 발생할 수 있..

🖥️ 백엔드/Redis

[Redis] 어바웃 레디스

1. Redis 란? DB-Engines RankingPopularity ranking of database management systems.db-engines.com [백엔드/기타] 인메모리 데이터베이스1. 인메모리 데이터베이스(in-memory database)메모리에 데이터를 적재하여 활용하는 데이터베이스 인메모리 데이터베이스 주요 특징1. Millisecond response(1ms = 0.001s)디스크 대비 매우 빠른 응답 속도대progfrog.tistory.comRemote Dictionary Serverin-memory, key-value 데이터 저장소를 지원하는 오픈소스 데이터베이스빠른 속도와 이식성에 강점을 갖는 C언어로 개발되어 있음!초당 5만~25만 Request 실행 가능Pers..

🖥️ 백엔드/Redis

[Redis] Thread I/O

개요Redis 6.0 이상부터 도입된 Thread I/O는 Redis의 I/O 처리 성능을 향상시키기 위한 중요한 기능Redis는 기본적으로 싱글 스레드로 동작하기 때문에, 높은 성능을 유지하면서도 멀티 코어를 활용할 수 있는 방안을 필요로 했고, Thread I/O는 이러한 요구를 충족하기 위해 도입 소개I/O 작업을 여러 스레드로 분산하여 처리할 수 있는 기능을 도입네트워크 I/O 처리 속도를 높이고, 데이터베이스가 높은 요청 처리량을 유지할 수 있도록함특히, 읽기 및 쓰기 요청이 많은 환경에서 성능 향상 효과가 크다. 특징1. 분리된 I/O 처리Redis는 기본적으로 모든 클라이언트 연결과 I/O 작업을 메인 스레드에서 처리Thread I/O 기능을 활성화하면, 클라이언트 소켓에서 데이터를 읽고 쓰..

🖥️ 백엔드/Redis

[Redis] RDB와 AOF

개요Redis는 비휘발성 데이터 저장을 위해 두 가지 주요 방식인 RDB (Redis Database)와 AOF (Append-Only File)를 제공각각의 방식은 데이터의 영속성과 복구를 다루는 방법이 다르며, 각자의 장단점이 있다. RDB (Redis Database)RDB는 Redis 데이터베이스를 주기적으로 덤프하는 방식이 방식은 전체 데이터베이스의 스냅샷을 특정 시간 간격으로 저장 특징주기적 스냅샷RDB 파일은 지정된 시간 간격에 따라 데이터베이스의 상태를 저장예를 들어, 매 5분마다 또는 1000개의 변경사항이 생길 때마다 RDB 파일이 생성될 수 있음복구 속도전체 데이터베이스를 덤프한 파일이기 때문에 복구 속도가 빠름작업 부하 감소주기적인 스냅샷을 이용해 디스크 I/O 작업을 일정하게 유지..

🖥️ 백엔드/기타

[백엔드/기타] 인메모리 데이터베이스

1. 인메모리 데이터베이스(in-memory database)메모리에 데이터를 적재하여 활용하는 데이터베이스 인메모리 데이터베이스 주요 특징1. Millisecond response(1ms = 0.001s)디스크 대비 매우 빠른 응답 속도대량의 트래픽이 몰리는 서비스에 적합빠른 응답 속도로 인한 높은 처리량을 제공2. Volatility Of RAM메모리 기반으로 데이터가 휘발성임3. Data types다양한 데이터 타입을 제공 2. CPU, Memory, DiskCPU: 연산 처리 - 초당 수십억 건 명령어를 처리하도록 설계되어 있음Memory: CPU가 활용하는 주 기억장치인 메인 메모리를 의미하며 일반적으로 RAM을 가리킴CPU에서 접근 속도가 Disk보다 빠름, 비용 비쌈Disk: 데이터가 영구 ..

🗂️ 개인프로젝트/IDOL

[개인프로젝트/IDOL] 1. 개발 환경 준비

개요적은 리소스로도 대량의 I/O 요청을 처리할 수 있는 방법이 뭐가 있을까?Spring Webflux를 통해 이런 문제를 어느정도 해결할 수 있다.Reactor라는 라이브러리를 통해서 적은 리소스로도 대량의 I/O 요청을 처리할 수 있는 구조를 제공하고 있다.Reactor는 React라는 표준에 대한 구현체로써, non-blocking 애플리케이션을 만들 수 있게 도와주는 라이브러리이다.Netty 기반으로 네트워크 비동기 I/O를 처리한 이후에, 이벤트 루프 기반을 활용해서 작업들을 빠르게 처리할 수 있다.이벤트 루프를 위해서 적절한 규모의 쓰레드도 사용하게 되는데, CPU 코어 개수가 너무 적지 않다면 일반적으로 CPU 코어 수만큼 쓰레드를 만들고 활용하게 된다.요청 개수에 맞춰 쓰레드를 생성해둬야하..

🖥️ 백엔드/스프링

[스프링] WebFlux와 Reactor

개요Spring WebFlux는 비동기적이고 논블로킹(non-blocking) 방식의 웹 애플리케이션 프레임워크로, 기존의 Spring MVC와 달리 반응형 프로그래밍(reactive programming)을 지원한다. WebFlux는 특히 높은 트래픽을 효율적으로 처리해야 하는 애플리케이션에서 유용하며, 이때 핵심적인 역할을 하는 것이 Reactor이다. Spring WebFlux와 ReactorReactor는 반응형 스트림(Reactive Streams)을 지원하는 라이브러리로, 비동기 데이터 스트림을 조작하고 처리하는 데 중점을 둔다. Spring WebFlux는 이 Reactor를 바탕으로 반응형 프로그래밍 모델을 제공한다. 주요 개념과 기능은 다음과 같다. 1. Reactor의 주요 컴포넌트Mo..

케로⸝⸝◜࿀◝ ⸝⸝
'분류 전체보기' 카테고리의 글 목록 (6 Page)