반응형 docker10 [Redis] Redis를 이용한 동시성 이슈 해결 실습 - Redlock https://bk0625.tistory.com/145 [Redis] Redis를 이용한 동시성 이슈 해결 실습해보기 - SETNX 사용 방법동시성 문제란?여러개의 프로세스나 스레드가 동시에 같은 리소스, 예를 들자면 데이터베이스나 캐시, 파일 등에 접근 할 때 예상 치 못한 데이터 충돌, 중복 실행, 무결성 문제가 발생하는 상황bk0625.tistory.com 지난 포스팅에서 Redis의 SETNX를 활용해 동시성 이슈를 해결해보았다. 해당 방법은 쉽게 구현할 수 있지만 여러 문제가 발생할 수 있다. SETNX 방식은 단일 Redis 노드에서만 동작한다. 즉 장애 발생 시 안전하지 않으며 여러 redis 인스턴스 활용 시 사용할 수 없다. 이런 멀티 노드 환경에서도 데이터의 정합성을 유지하고 동시성 문.. 2025. 2. 20. [Redis] Redis를 이용한 동시성 이슈 해결 실습해보기 - SETNX 사용 방법 동시성 문제란?여러개의 프로세스나 스레드가 동시에 같은 리소스, 예를 들자면 데이터베이스나 캐시, 파일 등에 접근 할 때 예상 치 못한 데이터 충돌, 중복 실행, 무결성 문제가 발생하는 상황이다. 대표적인 예시로는 재고 감소, 중복 결제 방지, 특정 작업의 중복 실행 방지 등이 필요 할 때 동시성 제어가 필요하다. Redis를 이용한 동시성 해결 방법 Redis를 활용하여 분산 락(distributed lock)을 사용하면, 하나의 작업이 끝날 때까지 다른 프로세스가 동일한 리소스를 변경하지 못하도록 막을 수 있다. Redis를 이용한 대표적인 동시성 해결 기법은 다음과 같다SETNX (SET if Not Exists) 사용Redlock 알고리즘 (분산 락 강화 버전) 사용이 두가지 방법을 nodejs.. 2025. 2. 20. [Redis] redis,docker로 멀티서버에서 pub/sub 실습해보기 어떤 하나의 서비스를 할 때 하나의 서버를 두는 것이 아닌 여러 대의 서버를 두는 경우가 있다. 해당 서비스가 소켓 통신을 통한 채팅 서비스를 제공한다고 생각해보자. A와 B 두 사람이 채팅을 한다고 할 때 서버가 한대라면 문제가 없다. 그런데 서버가 여러 대이고 각자 다른 서버에 연결이 되어 있다면? 그럴 때는 채팅을 어떻게 할 수 있을까? 이럴 때 redis의 pub/sub 기능을 사용해 이를 해결할 수 있다. Redisredis는 인메모리 데이터 베이스로 거대한 맵 데이터 저장소 형태를 가지고 데이터를 메모리에 저장하여 빠른 읽기와 쓰기를 지원한다. 싱글 스레드로 동시성 이슈가 발생하지 않고 해시 테이블을 사용하기 때문에 매우 빠른 속도로 데이터 검색이 가능하다. 이러한 특징으로 캐시 서버로 많이 .. 2025. 2. 9. [Docker] Docker compose docker compose는 다중 컨테이너 도커 애플리케이션을 정의하고 실행하기 위한 도구이다. 레디스와 node.js를 둘 다 사용하는 서버를 만들어보고 docker compose로 실행해보자 도커 클라이언트로 레디스 서버를 위한 컨테이너를 실행시키고 먼저 express 세팅을 해준 뒤 index.js를 다음과 같이 작성한다. const express = require("express"); const redis = require("redis"); //레디스 클라이언트 생성 const client = redis.createClient({ // url: 'redis://redis:6379' // or socket: { port: 6379, host: 'redis-container' } }); const a.. 2023. 12. 27. 이전 1 2 3 다음 반응형