서론

최근 프로젝트 진행 중 Redis 기술을 사용할 일이 생겨 인터넷으로 공부를 시작했습니다. 하지만 NoSQL 조차 모르던 저에게 Redis는 감조차 잡히지 않았고 책을 통해 체계적으로 공부를 해야겠다고 생각했습니다. 이것이 레디스다라는 책을 많이 추천해주시던데, 2013년에 출간되었기도 하고 그 당시 레디스엔 클러스터링 기능이 없어 다른 책을 찾아보았습니다. 책을 고를 때 두 가지 조건을 생각했습니다.

  1. 너무 어렵지 않을 것
    너무 두꺼운 책X, 어렵게 기술된 책X
  2. 비교적 최신에 나온 책일 것
    Redis 3.0 이후에 cluster 기능이 생겼기 때문에 최소 2015년 이후에 발간된 책을 찾았습니다.

그 결과 빅데이터 저장 및 분석을 위한 NoSQL & Redis라는 책을 발견하게 되었고 당장 도서관에 달려가 빌려오게 되었습니다.

목차

책의 목차는 아래와 같습니다. (velog에 접기 기능이 생겼으면 좋겠네요ㅎㅎ)

CHAPTER 1. NoSQL & Redis 소개
1.1 NoSQL 개념
1.2 NoSQL 종류
1.2.1 NoSQL 제품
1.2.2 빅데이터 데이터 모델링을 위한 가이드라인
1.3 키-밸류(KeyValue) DB 활용
1.3.1 장점
1.3.2 활용 영역
1.4 NoSQL 선정 방법

CHAPTER 2. Redis 설치 및 데이터 처리
2.1 주요 특징
2.2 제품 유형
2.3 다운로더 및 설치
2.3.1 Redis 설치 on Linux
2.3.2 Redis 설치 on Windows
2.4 Redis 시작과 종료
2.4.1 시작 & 종료 on Linux
2.4.2 시작 & 종료 on Windows
2.5 데이터 처리
2.5.1 용어 설명
2.5.2 데이터 입력/수정/삭제/조회
2.5.3 데이터 타입
2.6 Redis 확장 Module
2.6.1 REJSON
2.6.2 REDISQL
2.7 Lua Function & Script

CHAPTER 3. 트랜잭션 제어 & 사용자 관리
3.1 Isolation & Lock
3.2 CAS(Check and Set)
3.3 commit & rollback
3.4 Index 유형 및 생성
3.5 사용자 생성 및 인증/보안/Roles

CHAPTER 4. Redis Data Modeling
4.1 키-밸류(KeyValue) 데이터 모델링 개념
4.1.1 용어 설명
4.1.2 Redis 데이터 모델링 가이드라인
4.1.3 데이터 모델
4.2 논리적 DB설계
4.3 swapDB 설계

CHAPTER 5. Redis 아키텍처
5.1 Redis 아키텍처
5.2 시스템 & Disk 사양
5.3 메모리 운영기법
5.4 LazyFree 파라메터
5.5 데이터 Persistence
5.6 Copy on Write
5.7 Benchmark For Redis
5.8 관리 명령어
5.9 Data Export & Import
5.10 Redis Serialization Protocol & Mass Insertion

CHAPTER 6. Redis Cluster 시스템 & 로그 모니터링
6.1 복제&분산시스템개요
6.1.1 Partition 유형
6.1.2 Partition 구현 방법
6.2 Master & Slave & Sentinel
6.2.1 시스템 설정
6.2.2 장애처리 방법
6.2.3 Sentinel 명령어
6.3 부분 동기화
6.4 Redis Cluster 구축 및 운영
6.4.1 Cluster 서버
6.4.2 Cluster 명령어를 이용한 수동 설정방법
6.4.3 Cluster 명령어
6.4.4 redis-trib.rb 유틸리티를 이용한 자동 설정방법
6.4.5 redis-trib.rb 유틸리티를 이용한 자동 설정방법
6.5 Redis Cluster 장애 복구
6.5.1 Master/Slave Failover & AutoSwitch
6.5.2 Master 서버를 이용한 Slave 서버 복구
6.6 Client for Redis Server
6.6.1 JEDIS
6.6.2 Redisson
6.6.3 Lettuce
6.7 Logging & Monitoring
6.8 Subscribe & Publish
6.9 Server Monitor

CHAPTER 7. Redis 성능 튜닝
7.1 성능 튜닝 방법론
7.2 성능 튜닝 포인트
7.3 시스템 튜닝
7.3.1 대기시간 모니터링
7.4 Slow-Query 튜닝
7.5 서버튜닝
7.5.1 스와핑(SWaping) 모니터링 & 대응 방안
7.5.2 AOF 파일에서 발생하는 디스크 IO 문제에 대한 대응 방안
7.5.3 ScaleOut을 통한 분산 서버 구축 방안
7.5.4 손상된 메모리 영역에 대한 충분한 테스트와 검증을 통한 안정화 방안
7.5.5 Redis GDB(Gnu Debugger) 가이드를 이용한 버그 수집 및 분석을 통한 안정화 방안

후기

NoSQL 전문가가 아닌 한 명의 독자로서 후기를 써봅니다. 저만의 생각이니 가볍게 읽어주세요.

책 자체가 깊고 무겁고 어렵다기 보다는 쉽고 가벼운 느낌이었습니다. 비록 가끔 오타가 있었지만 기초적인 내용부터 실습까지 있기 때문에 초심자에게 괜찮은 책이라고 생각합니다.

특히 제가 Redis를 공부/적용하면서 가장 막막했던 부분이

  1. NoSQL, Redis의 개념
  2. 데이터 모델링
  3. 복제, 분산시스템

이렇게 세 가지였기 때문에 여기에 중점을 두어 책을 읽었습니다.

우선, NoSQL과 Redis에 대한 개념 설명은 정말 이해하기 쉬웠습니다. 필요성과 NoSQL의 개념, 종류, 용도 등 논리적으로 잘 풀어내어 잘 납득이 되었습니다. 하지만 데이터 설계 부분은 예시가 있었음에도 이해하기 어려웠습니다. 예시가 조금 더 있었으면 이해하기 수월했을 것이라 생각합니다만 제 실력 부족때문일지도 모르겠습니다. 마지막으로 복제, 분산시스템(Master-Slave, Clustering)은 제가 인터넷으로 공부하면서 굉장히 감을 못잡았던 부분인만큼 과연 책으로 이해가 될까 걱정했습니다. 책을 읽기 전 분산시스템에 대한 글을 수십여개를 봐서인지 책의 효과인지는 잘 모르겠지만 생각보다 이해가 잘 되었습니다. 중간에 실습을 못한 부분이 있는데 대출연장 기간이 다 되어서 반납을 해버렸습니다.. 우선 그 부분은 인터넷을 통해 실습을 해 볼 예정입니다.

결론
초심자에게는 적합한 책이지만 Redis에 대해 심층적으로 공부하고 싶으신 분은 다른 책을 추천드립니다.