본문 바로가기

CS/NoSQL6

[Redis] Multiplexing & Event Loop 0. 개요Redis의 내부 작동 원리에 대해 학습하다 multiplexer와 event loop 개념이 나와서 이에 대해 정리하고자 정리한다. 1. Multiplexing이란? 멀티플렉싱의 어원은 '다중화'로,I/O 관점에서는 '단 하나의 스레드가 수천개의 소켓(file descripter)를 동시에 감시하는 기술'을 의미한다. -> 시스템 자원 효율화ex) epoll, kqueueHTTP 관점에서는 '하나의 통신로를 활용해 여러개의 독립된 신호를 전송하는 기술'을 의미한다. -> 지연시간 단축ex) http 1.1 keep alive, http 2.0 stream I/O Multiplexing의 주요 매커니즘은 다음과 같다. 방식특징알고리즘 복잡도select감시 소켓 수 제한(보통 1024개)이 있고,.. 2026. 1. 22.
[NoSQL] Redis Streams 이론부터 코드까지! A to Z (1) 1. 배경프로젝트에서 Redis Pub/Sub을 SSE로 변경사항을 전송하는 데에 일괄적으로 사용하고 있었는데, 서버가 재배포 되거나 모종의 이유로 인해 서버가 죽어서 SSE 연결이 끊긴다면, 재연결이 되더라도 사용자가 화면을 새로고침하지 않는 이상 이전에 놓친 데이터를 받지 못하는 문제가 발생했습니다. 이로 인해 새롭게 변경 사항이 생기거나 데이터 갱신 스케줄러가 돌기 전까지 클라이언트는 잘못된 데이터를 확인할 수 있었습니다. 일시적 장애에도 최종 일관성을 보장하기 위해서는 재시도가 가능한 at least once 전송 구조여야 합니다. 이를 위해선 메시지 브로커가 메시지를 consumer에게 전달한 후 일정 시간 동안 저장해놓고 있어야 했습니다. 2. Redis Streams vs KafkaAt-.. 2026. 1. 6.
[NoSQL] Redis Pub/Sub 이론부터 코드까지! A to Z (2) 진행하고 있는 프로젝트의 운영환경의 서버가 다중 인스턴스로 되어 있다. 한 서버로의 변경 요청이 왔을 때, 이를 SSE로 해당 서버와 연결된 모든 클라이언트에 전달하고 있었는데, 다른 서버에 연결된 클라이언트들은 해당 변경 사항을 전달받지 못하는 문제가 생겼다. 해당 문제를 해결하기 위해 메시지 브로커 방식을 고려해 보았고, Redis Pub/Sub을 활용한 메시징 큐 방식을 적용할 수 있었다. 이 과정에서 학습했던 Redis의 Pub/Sub 내용에 대해 정리해보고자 글을 쓴다. 참고한 자료는 Redis 공식문서, Spring Data Redis 공식문서, 개발자를 위한 레디스다. 해당 글은 이전 글에서 다룬 이론을 토대로, Spring Boot 프로젝트에 적용한 코드를 다룬다. Spring Dat.. 2025. 12. 18.
[NoSQL] Redis Pub/Sub 이론부터 코드까지! A to Z (1) 진행하고 있는 프로젝트의 운영환경의 서버가 다중 인스턴스로 되어 있다. 한 서버로의 변경 요청이 왔을 때, 이를 SSE로 해당 서버와 연결된 모든 클라이언트에 전달하고 있었는데, 다른 서버에 연결된 클라이언트들은 해당 변경 사항을 전달받지 못하는 문제가 생겼다. 해당 문제를 해결하기 위해 메시지 브로커 방식을 고려해 보았고, Redis Pub/Sub을 활용한 메시징 큐 방식을 적용할 수 있었다. 이 과정에서 학습했던 Redis의 Pub/Sub 내용에 대해 정리해보고자 글을 쓴다. 참고한 자료는 Redis 공식문서, 개발자를 위한 레디스다. 1. Redis란? https://persi0815.tistory.com/33 2. Redis Pub/Sub이란? Redis의 Pub/Sub은 매우 가볍게 최소한의 .. 2025. 11. 20.
[Redis] Refresh Token Redis에 넣어보기 1. DB에 저장로그인: http://localhost:8080/oauth2/authorization/naver결과: user db에 회원 정보 저장, refreshToken db에 refresh token 저장, access token redirect(json, url)로그아웃: http://localhost:8080/users/logout헤더: access token 담아 요청결과: refreshToken db에서 refresh token 삭제 -> refresh token으로 access token 재발급 받지 못하도록 방지!!회원탈퇴: http://localhost:8080/users/me헤더: access token 담아 요청결과: user db에서 회원정보 삭제 아래 로직과 대조되는 부분만 첨.. 2024. 7. 8.
[Redis] FCM Token Redis에 넣어보기 1. DB에 FCM Token 저장하는 기존 방식@PostMapping("/generate")public ApiResponse tokenToFront( @RequestBody UserReqDto userReqDto // email, username, nickname, provider) { // 1. 받은 email 가지고 회원가입 되어있는 사용자인지 판단 Boolean isMember = userService.checkMemberByEmail(userReqDto.getEmail()); // 2. jwt 생성 String accessToken = ""; String refreshToken = ""; // 3. 기존 회원인지 판별 -> 튜토리얼 때문 Stri.. 2024. 7. 8.