[Redis] 분산락을 깊게 다뤄보자. (RedLock, Redisson)
·
Redis
🧐 들어가기전Redis에 대한 개념을 되짚어보다가, 분산락을 다시 한 번 살펴보게 되었고 문득 다음과 같은 궁금증이 생기게 되었다. "분산락은 어떤 구조로 이루어져있지? 우리가 흔하게 쓰는 Redisson의 내부구조는 어떻게 생겼지?" "분산락은 비관락과 어떤 차이점을 지니고 있고 어떤 장단점을 취하고 있지? 주의해야할 부분이 뭘까?" "분산락은 내부적으로 스핀락 형태를 취하고 있는가? 아니면 뮤텍스의 형태를 취하고 있는가? 아니면 세마포어?" 이 고민들을 해결하기 위해 해당 포스팅에서는 레디스 분산락을 깊게 다뤄볼 예정이다.🔸 1. Redis 분산락의 기본 구조분산 시스템에서는 하나의 자원을 여러 서버 또는 프로세스가 동시에 접근하려고 할 때 경쟁 조건(race condition) 이 발생할 수 있..
레디스 캐시 스탬피드 현상 (Cache Stampede)
·
Redis
🔸캐시 스탬피드 현상이란?캐시 스탬피드 현상: 하나의 캐시 항목이 만료되었을 때 다수의 요청이 동시에 캐시를 갱신하려고 하면서 발생하는 문제레디스를 캐시로 활용할 때 모든 키에 대해 만료 시간을 설정하는 것은 권장되지만, 대규모 트래픽 환경에서 만료시간을 어떻게 설정하느냐에 따라 캐시 스탬피드와 같은 예상치 못한 문제 상황이 발생할 수 있다. 위의 그림에서, 애플리케이션 1과 2는 look aside 방식으로 레디스를 사용하고 있다고 생각해보자. look aside 방식에서 애플리케이션은 레디스에 먼저 데이터가 있는지 질의한 후 데이터가 없을 때 데이터베이스에서 데이터를 읽어오는 과정을 반복한다. 이때, 레디스에서 특정 키가 만료되는 시점을 생각해보자.1️⃣ 다수의 애플리케이션이 동일한 캐시 키를 요청..
레디스 캐싱 전략, 캐시 만료, maxmemory-policy
·
Redis
🔸캐시로서의 레디스캐시로서의 레디스는 다음과 같은 이점을 지니고 있다.간편한 사용:키-값 형태로 데이터를 저장하고 반환하는 방식이 간단하며, 다양한 자료 구조(list, hash 등)를 변환 과정 없이 바로 저장할 수 있다.빠른 속도: 모든 데이터를 메모리에 저장하기 때문에 데이터 검색과 반환 속도가 매우 빠르다.평균 읽기 및 쓰기 속도가 1ms 미만으로 초당 수백만 건의 작업이 가능하다.고가용성(HA): 클러스터 기능을 통해 장애 발생 시 자동으로 장애를 감지하고 페일오버를 수행하여 운영자의 개입 없이 정상적으로 유지된다유연한 확장성(레디스의 클러스터): 레디스의 클러스터를 활용하면 캐시의 스케일 아웃이 쉬워 서비스 규모에 따라 캐시 자체의 규모를 쉽게 확장할 수 있습니다.🚨따라서 레디스는 캐시 저..
Redis란? (레디스가 싱글쓰레드로 동작하는 이유)
·
Redis
🔸Redis란?레디스는 Remote dictionary server의 약자로 오픈소스, 고성능 key-value 인메모리 NoSQL 데이터베이스이다.주로 캐싱, 세션 관리, 메시지 브로커, 실시간 데이터 분석 등의 목적으로 사용된다. 📌 핵심 특징:빠른 성능: 메모리 기반으로 동작하여 매우 빠른 데이터 읽기/쓰기 속도를 제공단순한 키-값(Key-Value) 저장소: 다양한 데이터 구조를 지원싱글 스레드 기반: 이벤트 루프를 이용한 높은 성능 유지지속성(Persistence) 지원: RDB 및 AOF 방식으로 데이터 영구 저장 가능분산 및 클러스터 지원: 여러 노드로 확장 가능🔸Redis의 특징 1️⃣  실시간 응답(빠른 성능) Redis는 RAM(메모리)에서 데이터를 저장하고 조회하기 때문에, 디스..
J_hzlo
'Redis' 카테고리의 글 목록