yeong0jae yeong0jae
close
프로필 사진

yeong0jae

github: @yeong0jae

  • 분류 전체보기 (31)
    • woowacourse (7)
    • 컨퍼런스 (1)
      • 2024 (1)
    • Tomcat (1)
    • Redis (3)
    • Project (3)
    • Infra (2)
    • Kotlin (3)
    • Java (3)
    • Spring (1)
    • OOP (2)
      • 객체지향의 사실과 오해 (2)
    • CS (1)
      • OS (1)
      • Network (0)
    • MySQL (0)
    • Algorithm (4)
      • 코딩테스트 후기 (1)
      • 문제 풀이 (3)

Redis Streams의 PEL(Pending Entries List)과 장애 복구 시나리오

Redis StreamsRedis Streams는 append-only 로그처럼 동작하면서도, 일반적인 append-only 로그의 한계를 넘어서는 여러 연산을 지원하는 데이터 구조입니다. O(1) 시간의 랜덤 액세스와 Consumer Group 같은 복합적인 소비 전략이 이에 해당합니다. 각 엔트리는 고유 ID(- 형식)와 필드-값 쌍으로 구성됩니다. XADD로 엔트리를 추가하고, XREAD나 XREADGROUP으로 소비하며, XRANGE로 특정 ID 구간을 조회할 수 있습니다. 아래와 같이 발행, 소비 구조를 나타낼 수 있습니다. 이를 활용할 수 있는 대표적인 사례로는 이벤트 소싱(사용자 행동·클릭 등 추적), 센서 모니터링(디바이스 데이터 수집), 알림 시스템(사용자별 알림 기록) 등이 있습니다. ..

2026. 3. 31.

Redisson의 tryLock은 Redis SETNX의 어떤 문제를 해결할까?

SETNX 명령으로 구현하는 분산락분산 환경에서 동시성을 제어해야 할 때, Redis의 SET 커맨드로 락을 구현할 수 있습니다.SET lock:key value NX EX 30 Redis는 싱글 스레드로 커맨드를 처리합니다. 여러 클라이언트가 동시에 SET NX를 보내더라도, Redis 내부에서는 하나씩 순서대로 실행됩니다. 따라서 동시성을 제어하기 적합합니다. SET은 Redis에 String 자료구조로 데이터를 저장할 때 사용하며, NX 옵션은 key가 존재하지 않을 때만 값을 설정합니다.따라서 먼저 요청한 프로세스가 key를 선점하고, 나머지는 실패하도록 구현할 수 있습니다.추가로 value에는 요청자를 식별할 수 있는 고유 값을 넣어, 해제 시 자신이 잡은 락인지 확인하는데에 활용할 수 있습니다..

2026. 3. 10.

분산 환경에서 Redisson Watchdog으로 알림 중복 발송 문제 해결하기

배경이전 글(Transactional Outbox Pattern으로 비동기 작업 신뢰성 보장하기)에서 Transactional Outbox 패턴으로 알림 발송의 신뢰성을 보장했습니다. 사용자가 인증할 때 인증 정보를 저장함과 동시에 Outbox 테이블에 "알림을 발송하겠다"는 작업을 저장합니다. 이후 스케줄러가 주기적으로 Outbox를 폴링하면서 실제 알림을 발송합니다.문제 상황: 스케줄러 중복 실행하지만 여러 인스턴스로 운영되는 분산 환경에서 이 스케줄러가 중복으로 실행되는 문제가 발생할 수 있었습니다. 두 인스턴스가 동시에 Outbox를 조회하고 같은 알림을 중복하여 발송하는 상황입니다. 사용자가 짧은 시간 안에 중복 알림을 받으면 사용자 경험이 저해됩니다. 중복 발송을 막으려면 하나의 인스턴스가 작..

2025. 11. 14.
  • navigate_before
  • 1
  • navigate_next
공지사항
전체 방문자
오늘
어제
전체 카테고리
  • 분류 전체보기 (31)
    • woowacourse (7)
    • 컨퍼런스 (1)
      • 2024 (1)
    • Tomcat (1)
    • Redis (3)
    • Project (3)
    • Infra (2)
    • Kotlin (3)
    • Java (3)
    • Spring (1)
    • OOP (2)
      • 객체지향의 사실과 오해 (2)
    • CS (1)
      • OS (1)
      • Network (0)
    • MySQL (0)
    • Algorithm (4)
      • 코딩테스트 후기 (1)
      • 문제 풀이 (3)
인기 글
Copyright © yeong0jae 모든 권리 보유.
SKIN: Copyright © 쭈미로운 생활 All rights reserved. Designed by JJuum.
and Current skin "dev-roo" is modified by Jin.

티스토리툴바