Database/Redis 6

[Redis] Usecase: Rate Limiter

1. Rate Limiter란?특정 사용자나 IP 등이 일정 시간 동안 보낼 수 있는 요청 수를 제한하는 기능 역할역할설명과도한 트래픽 방지요청량을 제한하여 서버에 과도한 부하가 발생하는 것을 방지악의적인 요청 방어비정상적인 반복 요청이나 API 남용으로부터 시스템 보호특정 사용자의 자원 독점 방지사용자별 요청량을 제한하여 일부 사용자가 시스템 자원을 과도하게 사용하는 것을 방지DB 및 외부 API 보호요청 폭증이 DB, Redis, 외부 API 등 Downstream 시스템으로 전파되는 것을 방지트래픽 급증 시 시스템 안정성 확보순간적인 요청 증가를 제어하여 전체 서비스의 안정적인 운영 지원 제한 기준Redis에는 Rate Limit의 기준이 되는 Key가 만들어짐✅ 누구를 제한할 것인지를 Key로 표..

Database/Redis 2026.08.12

[Redis] 3-4. Introduction to Redis: Pub/Sub

1. Pub/Sub메시지를 채널을 통해 발행자와 구독자가 느슨하게 연결하는 구조발행자는 단순히 메시지를 채널에 발행구독자는 관심 있는 채널을 구독하여 해당 메시지를 수신서로 존재를 몰라도 메시지 통신이 가능하여 확장성과 유연성이 높음 2. 메시지형식message: [message, 채널명, 메시지 내용]pmessage: [pmessage, 패턴, 채널명, 메시지 내용] 특징메시지는 최대 한번만 전송됨일반적인 key-value 공간과는 무관함 (db 상관 없음)수신 실패 시 재전송 없음 (내구성이 필요한 경우 Redis Streams를 고려할 것) 3. 명령어더보기SUBSCRIBE ch1 ch2PSUBSCRIBE patternUNSUBSCRIBE chPUNSUBSCRIBE patternPUBLISH ch ..

Database/Redis 2025.06.04

[Spring Data Redis] 1. Redis

1. RedisTemplateSpring에서 Redis와 상호작용할 수 있게 해주는 중심 클래스.항목설명동작 방식자동으로 직렬화 및 연결 관리 처리 (고수준 API)구성RedisOperations 인터페이스 구현스레드 안전성설정 완료 후 스레드 안전함뷰(Views)opsForValue(), opsForList()→ 특정 자료구조 전용 API처럼 사용 가능 예제) ListOperations더보기@Autowiredprivate ListOperations listOps;public void addLink(String userId, URL url) { listOps.leftPush(userId, url.toExternalForm());}특정 자료형용 opsForXxx() 뷰를 DI로 주입 가능vs Stri..

Database/Redis 2025.05.14

[Redis][Community Edition] 2-7. Manage Redis: Scale with Redis Cluster

1. Redis Cluster 101수평 확장 및 복제를 위한 구조✅ Auto Sharding (데이터가 여러 노드에 자동 분산 저장됨) ✅ Auto Failover: Partial Failure Tolerance (일부 노드에 장애가 생기거나 통신이 끊겨도 클러스터는 작동을 유지함)⚠️ 마스터 노드의 과반수가 다운되면 전체 클러스터 다운 (다수의 마스터가 살아있어야 운영 가능)⚠️ 멀티 키 명령 제약 존재 (한 명령어에 여러 샤드를 기록할 수 없음) Master-Replica model마스터 노드들이 모든 해시 슬롯(16384개)을 분할해서 관리✅ 각 마스터는 1개 이상의 레플리카를 가질 수 있음➡️ 마스터 노드가 죽으면, 해당 마스터의 레플리카 중 하나를 자동으로 승격하여 서비스를 유지함 TCP po..

Database/Redis 2024.09.08

[Redis][Community Edition] 2-6. Manage Redis: Replication

1. Replicationmaster의 데이터를 replica가 실시간으로 복제하는 기능✅ 비동기 복제: master는 클라이언트 요청을 먼저 처리한 뒤 번경된 내용에 대한 이벤트를 명령 스트림 형태로 replica에 전달함✅ 계층적 구조: Replica가 또 다른 Replica의 Master가 될 수 있음 2. 재연결master와 replica의 연결이 끊어져도 replica는 자동으로 master에 재연결을 시도함➡️ 재연결에 성공하면, 복제 상태를 확인한 후 두가지 방식 중 하나로 동기화를 시도함 복구 방식항목Partial RecynchronizationFull Recynchronization동작 조건연결이 일시적으로 끊겼다가 재연결될 때Replica가 처음 연결되거나, 복제 기록이 손실된 경우복구..

Database/Redis 2024.09.08

[Redis] 2. Understanding Data Types

cachingqueuingevent processing 1. Stringbyte sequence 저장문자열 매핑에 주로 사용됩니다. (key, value 모두 문자열) Data StructureTextSerialized objectBinary array(image, video, audio) Usagecachecountersbitwise operation 더보기SET bike:1 Deimos # key(namespace:id) - valueGET bike:1 # Deimos 2. JSONSyntax: JSONPath UsageAPI Response (cached) 더보기JSON.SET user:1001 $ '{"name": "John Doe", "email": "john.doe@example.com", ..

Database/Redis 2024.09.05