Menu
-
👀 들어가기 전에Redis를 단순 캐시로만 사용할 때는 사실 데이터가 날아가도 큰 문제가 없습니다. 하지만, 세션, 장바구니, 게임 진행 상태, 재고 상태 처럼 비즈니스에 중요한 데이터를 Redis에 보관하는 순간부터는 날아가는 순간, 큰일납니다. 서버가 재시작 되거나, 전원이 꺼진다면? 데이터가 모두 증발해버립니다. 또한 수백만 개의 키가 쌓인 운영환경에서 특정 키를 조회하겠다고 잘못된 명령 하나를 실행했다가서비스 전체가 멈추는 장애로 이어질 수도 있습니다. (실제 아래 쿠팡 사례, 카카오 기사 참조)https://zdnet.co.kr/view/?no=20131119174125 카카오 "레디스, 잘못쓰면 망한다"국민메신저 카카오톡 개발 업체인 카카오가 웹애플리케이션 서비스를 만드는 개발자들을 대상으로..
(CS Study) Redis의 핵심 - Key 관리 기법과 영속성
👀 들어가기 전에Redis를 단순 캐시로만 사용할 때는 사실 데이터가 날아가도 큰 문제가 없습니다. 하지만, 세션, 장바구니, 게임 진행 상태, 재고 상태 처럼 비즈니스에 중요한 데이터를 Redis에 보관하는 순간부터는 날아가는 순간, 큰일납니다. 서버가 재시작 되거나, 전원이 꺼진다면? 데이터가 모두 증발해버립니다. 또한 수백만 개의 키가 쌓인 운영환경에서 특정 키를 조회하겠다고 잘못된 명령 하나를 실행했다가서비스 전체가 멈추는 장애로 이어질 수도 있습니다. (실제 아래 쿠팡 사례, 카카오 기사 참조)https://zdnet.co.kr/view/?no=20131119174125 카카오 "레디스, 잘못쓰면 망한다"국민메신저 카카오톡 개발 업체인 카카오가 웹애플리케이션 서비스를 만드는 개발자들을 대상으로..
2026.04.10 -
👀 들어가기 전에Redis를 처음 접하고 무작정 String형 자료구조만 써본 상태에서 조금 더 깊게 알아보고 싶다라는 마음으로 여태 기본 자료구조 String, List를 봐왔습니다. 이제 마지막으로 남은 기본 자료구조인 Set과 Hash에 대해서 알아보고 Redis 기본 자료구조 파헤치기를 마무리하려고 합니다. 이번 글에서는 Redis의 Set과 Hash 자료구조를 내부 인코딩 방식부터 주요 명령어의 시간복잡도, 실무 활용 관점까지 기술적으로 깊이있게 정리해보겠습니다.👀 본론1. Redis Set1) Set의 핵심 특성Redis의 Set은 중복되지 않는 문자열 값의 집합입니다.Java의 Set 인터페이스와 동일한 개념으로 같은 값을 여러 번 추가하려 해도 Set에는 한 번만 저장됩니다. Set을 ..
(CS Study) Redis 기본 자료구조 깊게 파헤치기 - Set & Hash (마지막)
👀 들어가기 전에Redis를 처음 접하고 무작정 String형 자료구조만 써본 상태에서 조금 더 깊게 알아보고 싶다라는 마음으로 여태 기본 자료구조 String, List를 봐왔습니다. 이제 마지막으로 남은 기본 자료구조인 Set과 Hash에 대해서 알아보고 Redis 기본 자료구조 파헤치기를 마무리하려고 합니다. 이번 글에서는 Redis의 Set과 Hash 자료구조를 내부 인코딩 방식부터 주요 명령어의 시간복잡도, 실무 활용 관점까지 기술적으로 깊이있게 정리해보겠습니다.👀 본론1. Redis Set1) Set의 핵심 특성Redis의 Set은 중복되지 않는 문자열 값의 집합입니다.Java의 Set 인터페이스와 동일한 개념으로 같은 값을 여러 번 추가하려 해도 Set에는 한 번만 저장됩니다. Set을 ..
2026.04.10 -
👀 들어가기 전에Redis를 어느정도 사용하다보면 자연스럽게 Redis에서 사용하는 자료구조들에 관심이가고, 이 중 List를 어떻게 써야 할지 고민하는 시점이 오게 됩니다.특히 이벤트 처리비동기 작업 큐최근 기록 관리Producer / Consumer 구조 (물론, Redis에서 제공해주는 pub/sub 라이브러리가 존재하기는 한다.)에서 Redis List를 쓰면 좋겠다라는 생각이 드는데, 막상 내부 구조나 성능 특성을 제대로 모르고 사용하면잘못쓰게 되고 결국 성능 병목으로 이어질 수 밖에 없습니다. 그래서 이번 글에서는 Redis List의 내부 구조 + 시간 복잡도 + 실전 활용 패턴까지 정리해보도록 하겠습니다.👀 본론1. Redis List란?답부터 이야기하면, 문자열 값(String)들의 ..
(CS Study) Redis List 정복 : 내부 구조부터 Queue / Stack으로의 활용까지👀 들어가기 전에Redis를 어느정도 사용하다보면 자연스럽게 Redis에서 사용하는 자료구조들에 관심이가고, 이 중 List를 어떻게 써야 할지 고민하는 시점이 오게 됩니다.특히 이벤트 처리비동기 작업 큐최근 기록 관리Producer / Consumer 구조 (물론, Redis에서 제공해주는 pub/sub 라이브러리가 존재하기는 한다.)에서 Redis List를 쓰면 좋겠다라는 생각이 드는데, 막상 내부 구조나 성능 특성을 제대로 모르고 사용하면잘못쓰게 되고 결국 성능 병목으로 이어질 수 밖에 없습니다. 그래서 이번 글에서는 Redis List의 내부 구조 + 시간 복잡도 + 실전 활용 패턴까지 정리해보도록 하겠습니다.👀 본론1. Redis List란?답부터 이야기하면, 문자열 값(String)들의 ..
2026.04.06 -
👀 들어가기 전에Redis를 처음 접하면 “String 타입이 뭐 별거 있겠어?”라고 생각하기 쉽습니다.하지만 실제로는 Redis 성능과 메모리 효율의 핵심이 이 String 내부 구조에 숨어 있습니다.특히 백엔드에서 Redis를 사용할 때왜 빠른지왜 작은 단위로 쪼개야 하는지왜 특정 상황에서 메모리가 터지는지이걸 이해하려면 String 타입을 제대로 알아야 한다고 생각하여 기본부터 다시 파보려합니다.👀본론1. Redis의 String TypeRedis의 String 타입은 "문자열을 저장하는 자료형"처럼 보이지만 실제로는 훨씬 더 범용적인 데이터 타입입니다.Redis에서 String은 단순 text 저장용 타입이 아니라 바이트 배열 기반의 가장 기본적인 데이터 저장 단위입니다. 즉, Redis St..
(CS Study) Redis String 타입 완전 정리(Binary Safe부터 내부 인코딩까지)👀 들어가기 전에Redis를 처음 접하면 “String 타입이 뭐 별거 있겠어?”라고 생각하기 쉽습니다.하지만 실제로는 Redis 성능과 메모리 효율의 핵심이 이 String 내부 구조에 숨어 있습니다.특히 백엔드에서 Redis를 사용할 때왜 빠른지왜 작은 단위로 쪼개야 하는지왜 특정 상황에서 메모리가 터지는지이걸 이해하려면 String 타입을 제대로 알아야 한다고 생각하여 기본부터 다시 파보려합니다.👀본론1. Redis의 String TypeRedis의 String 타입은 "문자열을 저장하는 자료형"처럼 보이지만 실제로는 훨씬 더 범용적인 데이터 타입입니다.Redis에서 String은 단순 text 저장용 타입이 아니라 바이트 배열 기반의 가장 기본적인 데이터 저장 단위입니다. 즉, Redis St..
2026.04.04 -
👀 들어가기전에 Virtual Thread를 학습하고 프로젝트를 돌아보던 중, 이 프로젝트도 주문 ~ 결제까지의 흐름에 I/O Bound가 큰 부분인데Virtual Thread를 활용하여 개선할 수 있지 않을까? 라는 생각이 들어 다시 돌아와보았습니다. 이번 시간에는 Virtual Thread를 사용해보고 스레드가 어떻게 활용되고 있는지를 까보면서 최적화하는 방향으로 내려가보겠습니다.👀 본론1. Virtual Thread의 적용우선, Virtual Thread를 적용하기위해 아래와 같이 설정을 진행하였습니다. 이미 Java 21을 사용하고 있었기에 Virtual Thread 사용은 어렵지 않았습니다.위와 같이 설정을 하면, OS Thread와 Java Thread의 비중이 1:1 이던 것이 N:M으로..
[Sansam E-commerce] 13. 다시 이 프로젝트를 돌아보며 (feat. Virtual Thread)👀 들어가기전에 Virtual Thread를 학습하고 프로젝트를 돌아보던 중, 이 프로젝트도 주문 ~ 결제까지의 흐름에 I/O Bound가 큰 부분인데Virtual Thread를 활용하여 개선할 수 있지 않을까? 라는 생각이 들어 다시 돌아와보았습니다. 이번 시간에는 Virtual Thread를 사용해보고 스레드가 어떻게 활용되고 있는지를 까보면서 최적화하는 방향으로 내려가보겠습니다.👀 본론1. Virtual Thread의 적용우선, Virtual Thread를 적용하기위해 아래와 같이 설정을 진행하였습니다. 이미 Java 21을 사용하고 있었기에 Virtual Thread 사용은 어렵지 않았습니다.위와 같이 설정을 하면, OS Thread와 Java Thread의 비중이 1:1 이던 것이 N:M으로..
2026.04.02 -
👀 들어가기 전에최근 "DI 프레임워크는 필요 없다"는 글을 보고, 과연 Spring의 DI는 정말 필수적인가에 대해 고민하게 되었다.https://dannyryman.github.io/tech-blog/2024/12/18/you-do-not-need-a-di-framework.html Why You Don’t Need a DI Framework: A Case for Manual Dependency InjectionDependency Injection (DI) frameworks are so widely adopted that many developers assume they are the only option for managing dependencies in an application. Howeve..
(CS Study) Spring의 DI는 정말 필수적인가? 우리는 왜 Spring을 사용해야할까?👀 들어가기 전에최근 "DI 프레임워크는 필요 없다"는 글을 보고, 과연 Spring의 DI는 정말 필수적인가에 대해 고민하게 되었다.https://dannyryman.github.io/tech-blog/2024/12/18/you-do-not-need-a-di-framework.html Why You Don’t Need a DI Framework: A Case for Manual Dependency InjectionDependency Injection (DI) frameworks are so widely adopted that many developers assume they are the only option for managing dependencies in an application. Howeve..
2026.04.02 -
👀 들어가기 전에JDK에 정식 도입된지 좀 시간이 지난 Virtual Thread에 대해 알아보려 합니다.요 근래 OS Level에서의 공부를 하며 현재 제가 실제로 만드는 프로그램과 어떻게 연동되게 되는지를 공부해가며 Thread쪽에 많은 관심이 가기 시작했습니다. I/O 작업이 많은 어플리케이션에서 상당한 장점을 보이는 Virtual Thread를 좀 더 깊이있게 파보기 위해 이 주제를 선정하게 되었습니다. 기존에는 Kernel Level Thread와 User Level Thread를 1:1 매핑하여 사용하는 JVM 스레드 모델이었다면 현재는 여러 개의 가상 스레드를 하나의 네이티브 스레드에 할당하여 사용하는 모델입니다. 이 글에서는 Virtual Thread가 기존 스레드 모델과의 다른점, ~..
(CS Study) Java Virtual Thread (feat. 모던 자바 동시성 프로그래밍)👀 들어가기 전에JDK에 정식 도입된지 좀 시간이 지난 Virtual Thread에 대해 알아보려 합니다.요 근래 OS Level에서의 공부를 하며 현재 제가 실제로 만드는 프로그램과 어떻게 연동되게 되는지를 공부해가며 Thread쪽에 많은 관심이 가기 시작했습니다. I/O 작업이 많은 어플리케이션에서 상당한 장점을 보이는 Virtual Thread를 좀 더 깊이있게 파보기 위해 이 주제를 선정하게 되었습니다. 기존에는 Kernel Level Thread와 User Level Thread를 1:1 매핑하여 사용하는 JVM 스레드 모델이었다면 현재는 여러 개의 가상 스레드를 하나의 네이티브 스레드에 할당하여 사용하는 모델입니다. 이 글에서는 Virtual Thread가 기존 스레드 모델과의 다른점, ~..
2026.03.27 -
👀 들어가기 전에개발을 하다보면 Paging이라는 단어를 여러 곳에서 만나게 됩니다.운영체제의 Virtual memory Paging데이터베이스의 Buffer Pool Paging웹서비스에서 사용하는 Pagination (offset / cursor)모두 같은 단어를 사용하기에 이전부터 많이 헷갈렸습니다. 큰 뜻에서는 데이터를 일정단위로 나누어 다룬다는 공통점이 있지만, 계층, 목적, 관리 대상, 내부 동작은 생각보다 꽤 다릅니다.그 중에서도 운영체제의 Paging은 다른 맥락의 Paging을 이해할 때 기준점이 되는 핵심 개념이라고 느꼈습니다. 이번 글에서는 그 중 OS LEVEL의 Paging에 대해서 깊이있게 탐구해보고 Application SW를 개발하는 입장에서 어떤 부분들을 신경써야 하는지,..
(CS Study) Paging : OS Level 부터 Application Level까지👀 들어가기 전에개발을 하다보면 Paging이라는 단어를 여러 곳에서 만나게 됩니다.운영체제의 Virtual memory Paging데이터베이스의 Buffer Pool Paging웹서비스에서 사용하는 Pagination (offset / cursor)모두 같은 단어를 사용하기에 이전부터 많이 헷갈렸습니다. 큰 뜻에서는 데이터를 일정단위로 나누어 다룬다는 공통점이 있지만, 계층, 목적, 관리 대상, 내부 동작은 생각보다 꽤 다릅니다.그 중에서도 운영체제의 Paging은 다른 맥락의 Paging을 이해할 때 기준점이 되는 핵심 개념이라고 느꼈습니다. 이번 글에서는 그 중 OS LEVEL의 Paging에 대해서 깊이있게 탐구해보고 Application SW를 개발하는 입장에서 어떤 부분들을 신경써야 하는지,..
2026.03.21