[실전 레디스] 1장

유수민·2024년 9월 29일
0
post-thumbnail

다음달부터 시작하는 책은 실전 레디스 라는 책이다.
현재 회사내에서 캐시용으로 사용하는 메모리인데, 그냥 단순히 쓰기만 했지 레디스에 대한 공부를 해보지 않아왔기 아무것도 모르고 그냥 쓰고 있다는 죄책감(?)때문에 이 책을 스터디한다고 해서 바로 달려갔다. 정말 반갑고 기대가 아주 큰 스터디 책이다.

A. 레디스를 왜 썼어요? 라고 누군가 물어본다면 뭐라고 답해야 할까
Q. 디비로 가는 비용이 큰데 굳이 디비로 가지 않아도 되는 데이터인 캐시를 담아둘 저장소가 필요했어요. 그리고 빠른 응답으로 속도가 엄청 빨라요

내가 그동안 레디스에 대한 아는 것을 여기까지다..ㅎ
그럼 어떤 사실을 알고 어떤 것을 모르는지 간단히 1장에서 이야기 하고 있는 레디스의 특징을 통해 기록하고자 한다.

왜 빨라?

우리가 일반적으로 알고 있는 MySQL이나 오라클과 같은 RDBMS와 같은 디스크 기반으로 처리하는 데이터베이스 엔진이라도 디스크에 입출력할 필요없이 메모리에서 처리하는 경우가 있다고 한다(오,,몰랐는데?🤔) 레디스는 버퍼 관리 등에 따른 오버헤드를 제거하고 기능을 최소화하는 방식을 통해 빠르게 동작한다고 한다.
아직 초반이라 간단하게 이야기하고 있는데 레디스가 어떤 매커니즘으로 동작하는 지 파악하고 어떤 방식을 사용하여 왜 빠른지에 대한 결론을 짓는 일이 이 책의 읽는데 목표가 될 것 같다.

싱글 스레드 기반이래!

아 난 정말 레디스를 그냥 써왔음을 알게되는 순간이었다. 레디스를 검색만 해도 알게되는 내용인데 이제 알게되다니 ㅠ
싱글 스레드지만 이벤트 루프를 형성하여 많은 요청을 처리할 수 있다고 한다.
또한 부분적으로 멀티스레드로 데이터 접근부분만 싱글 스레드고 옵션을 통해 I/O 부분은 멀티 스레드 처리를 활성화 할 수 있다고 한다. 기본적으로 싱글 스레드이고 필요시 멀티스레드 기능을 사용하는 것 같다.

자료형이 다양하다

그동안 난 레디스를 캐시로만 사용해왔기 때문에 String만 알고 있었는데 이밖에 정말 다양한 자료형이 있음을 확인했다. 각 자료형마다의 명령어도 다르다고 한다. String, list, hash, set, sored set이 있다고 하는데 다음 장에서 알 수 있을 것 같다.

캐시용 말고도 용도가 많아!

배치 처리 메시지 큐, Pub/Sub 시스템 구축(클라이언트/서버 모델 기반의 요청/응답 통신)에도 쓰인다고 한다.

트랜잭션 처리

레디스는 RDBMS에 있는 트랜잭션 실패 시 롤백 기능은 지원하지 않는다. 명령어를 실패하더라도 그대로 나머지 처리를 계속해서 수행하는 패턴이다.

데이터의 영속성을 갖추고 있어?

나는 레디스의 데이터 영속성에 대해 전혀 알고 있지 않았다. 책에서는 레디스가 두가지 종류의 영속성을 제공한다고 한다.

  • RDB(Redis Database)
    특정 시점의 레디스 데이터(스냅샷)를 나타내는 여러개의 데이터 파일을 생성하는 방식(백업)
  • AOF(Append Only File)
    AOF로 appendFsync의 값을 always로 설정함으로써 영속성을 보장할 수 있다. 쓰기 작업마다 디스크에 플러시 한다.

AOF 내용에 대한 관련 논문이 있다. Redis에서 AOF Rewrite 기법의 오버헤드 분석
해당 논문에 대한 내용은 추후 따로 작성해볼 예정이다.

profile
배우는 것이 즐겁다!

0개의 댓글