Redis vs Memcached — 어떤 상황에서 무엇을 선택해야 하는가
캐시 서버를 도입해야 한다. 검색하면 두 이름이 반드시 나온다. Redis와 Memcached. “그냥 Redis 쓰면 되지 않나요?”라고 묻는 신입 개발자에게 “맞아요, 대부분은요”라고 답하는 것은 절반만 옳...
캐시 서버를 도입해야 한다. 검색하면 두 이름이 반드시 나온다. Redis와 Memcached. “그냥 Redis 쓰면 되지 않나요?”라고 묻는 신입 개발자에게 “맞아요, 대부분은요”라고 답하는 것은 절반만 옳...
한 줄 요약: Redis 트랜잭션(MULTI/EXEC)은 클라이언트 출력 버퍼에 명령을 큐잉하고 EXEC 시 원자적으로 실행하지만 롤백이 없다. 진짜 안전한 동시성 제어는 WATCH(CAS)와 Lua Sc...
한 줄 요약: Redis Streams는 “메시지를 보내고 받는 우체통”인데, 받는 사람이 여러 명이어도 편지가 사라지지 않고, 누가 읽었고 누가 아직 안 읽었는지까지 추적해주는 Redis의 자료구조입니다...
한 줄 요약: Redis는 단일 프로세스(Standalone)에서 시작해 자동 장애복구(Sentinel), 수평 확장(Cluster)으로 진화하며, 각 모드는 해결하는 문제가 근본적으로 다르다 — 무엇을 ...
실시간 랭킹을 구현해야 한다. MySQL로 매 요청마다 ORDER BY score DESC를 돌리면 수천 명이 동시 접속할 때 DB가 버티지 못한다. Redis Sorted Set 하나로 수백만 명의 점수를 실...
새벽 2시, Redis 마스터 서버의 디스크가 고장났다. 복제 없이 단일 Redis만 운영 중이었다면? 캐시 데이터는 전부 날아간다. 서비스가 재개되어도 모든 캐시가 비어있으니 DB에 쿼리가 폭발적으로 몰린다....
쿠팡 블랙프라이데이 자정, 한정판 운동화 1켤레에 5만 명이 동시에 달려든다. 서버 20대가 저마다 “재고 1개 남음”을 읽고 결제를 진행하면, 재고는 1개인데 20명에게 팔리는 참사가 벌어진다. synchro...
로그인 세션이 24시간 뒤 자동 만료되지 않는다면 어떻게 될까? 사용자가 로그아웃을 잊으면 세션은 영원히 메모리에 남는다. 수백만 명의 서비스라면 Redis 메모리가 조용히, 그러나 확실히 고갈된다. 어느 날 ...
채팅 서비스를 서버 3대로 운영한다. 사용자 A는 서버 1에 WebSocket으로 연결되어 있고, 사용자 B는 서버 2에 연결되어 있다. A가 B에게 메시지를 보낸다. 서버 1은 서버 2에 연결된 B에게 직접 ...
재고 감소 로직을 떠올려보자. GET으로 재고를 읽고, 0보다 크면 DECR로 줄인다. 코드로만 보면 아무 문제가 없다. 그런데 GET과 DECR 사이 0.05밀리초의 틈에 다른 스레드가 끼어들면 재고가 -1이...