Redis Introduction

<< 설치 및 기술지원 Redis Release Notes 4 >>

Redis Introduction

Redis logo

주요 특징

  • 데이터 저장소로 디스크가 아닌 메모리를 사용합니다.   그리고 데이터의 안전한 보관과 백업을 위해 다른 서버의 메모리에 실시간으로 복사본을 남길 수 있고, 디스크에 저장하는 방법을 제공합니다.
  • 성능은 초당 약 10만회 명령을 실행합니다. 이는 서버에 따라 다르지만 일반적으로 초당 2만 ~ 20만회를 실행합니다.   » 성능에 대한 자료는 여기를 보세요.
  • 기본적으로 key-value 저장 방식이지만, Lists, Sets, Sorted Sets, Hashes 같은 다양한 저장 방식을 제공합니다.   따라서 다양한 방식으로 데이터를 활용할 수 있습니다.
  • Redis Server Instance는 1개 프로세스(process)로 수행되며, 따라서 CPU 1 core만 사용합니다.
    그러므로, 서버 머신 또는 VM 하나에 여러 개의 Redis Server를 사용할 수 있습니다.
    » Process와 thread에 대한 자세한 내용은 여기를 보세요.

개발

Redis developer

Memory DB에 대한 생각

Redis developer  Microsoft Research's eScience Group manager Jim Gray
  • Jim Gray는 2006년에 이미, 메모리가 디스크 역할을 할 것이며, 디스크는 테잎이 될 것이라고 말했습니다.
    그리고 메인 메모리 DB가 일반적인 DB가 될 것이라고 했습니다.
  • Memory is the New Disk, Disk is the new tape.
    Main Memory DB is going to be common.

    관련 기사: infoQ, wired, slideshare
  • 메모리 DB에 대해서는 상반된 두 가지 견해가 있습니다. 하나는 처리 속도가 빠르다는 것이고, 다른 하나는 데이터 분실에 대한 걱정 것입니다.   레디스는 장점을 살리고 단점을 커버하는 기술을 가지고 있으므로 데이터 분실에 대한 걱정을 거의 하지 않아도 됩니다.   레디스는 데이터 보존을 두 가지 방식으로 제공합니다.   하나는 데이터를 다른 서버에 실시간으로 복제하는 기능입니다. 이 기능을 이용하면 Master server가 down되어도, slave(clone) server로 접속해서 서비스를 계속할 수 있습니다.   또 하나는 디스크 쓰기 기능을 제공합니다. 이 기능을 사용해도 레디스의 성능은 거의 떨어지지 않습니다.   레디스 시작 시 이 데이터를 읽어 들여 서비스를 계속 수행하므로, 데이터 분실 위험은 거의 없다고 봐도 됩니다.

DB Engines Ranking

  • 레디스가 전 세계 데이터베이스 순위에서 7 위를 차지하고 있습니다.
    레디스가 이렇게 많이 사용되는지 잘 몰랐다면 이것은 놀라운 소식이 될것입니다.
  • Key-Value Store 부분에서는 멤케시드를 저만치 물리치고 1위를 차지하고 있습니다.


레디스를 사용하는 곳

국내는 물론이고 세계 유수의 기업들에서 레디스를 사용하고 있습니다.   아래 이미지를 클릭하면 자세한 내용을 볼 수 있습니다.

여기 소개된 사이트들 외에서 Yahoo!, the guardian, tumblr, stackoverflow, viacom, GitHub, Instagram, flickr, snapchat 등 수많은 사이트에서 사용하고 있습니다.

Twitter 트위터

  • 레디스를 이용해서 초당 30만 트윗을 처리할 수 있도록 구축
  • 아래는 Redis를 이용한 Twitter Timeline architecture 입니다.
twitter architecture
  • Real-Time Delivery Architecture at Twitter 동영상: infoQ
  • 30 Billion Redis Updates Per Day 기사: Pivotal
  • Scaling Redis at Twitter 동영상:

Weibo 웨이보

  • 웨이보는 중국판 트위터입니다. 중국 인터넷 사용자의 70% 이상이 웨이보를 가장 중요한 정보 수단으로 여기는 것으로 조사되었습니다.
  • 2013년 1월 23일 중국 설날(춘절)에는 트위터를 제치고 초당 메시지 32,312건 돌파해서 기록을 세우기도 했습니다.
  • 웨이보는 레디스를 이용해, 일일 5천억 읽기와 5백억 쓰기를 할 수 있도록 구축했으며,
    500대 이상 서버(머신)으로 2000개 이상 레디스 서버(인스턴스)를 운영하고 18TB 이상 메모리를 사용합니다.
  • 레디스를 이용한 웨이보 아키텍처
  • Weibe architecture
  • 관련 기사: Largest Redis Cluster Ever(Eng.)
  • 레디스는 Top 10 list 같은 것을 뽑는데 아주 적합하고, 경험상 레디스 인스턴스당 메모리 사용량을 30GB 이하로 유지하고 있다고 합니다.

NAVER LINE

  • 네이버 라인 레디스 사용 아키텍처: 2011년
  • Naver Line architecture 2011
  • 사용자가 급격히 증가하면서 네이버 라인에서는 새로운 DB 아키텍처를 설계하여서, 메인 DB를 레디스에서 HBase로 변경하였습니다.   하지만 앞 단 Queue 용도로 레디스를 사용하고 있습니다.
  • Naver Line architecture 2012
  • 관련 글(LINE Engineers' Blog) LINE Storage: Storing billions of rows in Shareded-Redis and HBase per Month

KakaoTalk

  • 국민 대부분이 사용하고 있는 카톡도 레디스를 사용하고 있습니다.   '2015년 인터넷 트렌드 보고서'에 따르면, 카카오톡 평균 구동 횟수는 55회로 전세계 애플리케이션(이하 앱) 중 1위를 차지했습니다.   다음은 공개SW포탈에 소개된 KakaoTalk의 아키텍처이다.
  • Kakao Talk architecture
  • 관련 글 (공개SW포탈) 카카오 - 공개SW로 만든 국민 모바일 메신저 '카카오톡'

아틀란 스토리

Pinterest 핀터레스트

  • 아래 그림은 2010년 부터 2012년 까지 핀터레스트 일 페이지뷰 그래프입니다.
    2012년 10월 핀터레스트의 데이터베이스 구성은 MySQL 80대, 레디스 110대, 멤케시 200대 입니다.
    물론 지금은 방문자가 훨씬 많기 때문에 이 구성보다 훨씬 커졌을 것입니다.
  • Pinterest
  • 이 글은 pivotal에 있는 것으로 핀터레스트에서 수십억개의 관계(follow users and boards)를 레디스를 이용해서 하고 있는 것으로 소개하고 있습니다. Using Redis at Pinterest for Billions of Relationships
  • 이 글은 핀터레스트 엔지니어링 블로그에 있는 것으로 follow 관계를 Redis SortedSet, Set 등을 이용해서 개발했다는 내용입니다. Building a follower model from scratch
  • 이 동영상은 InfoQ에 있는 것으로 2010년 3월 MySQL 1대 시작해서 2012년 10월까지 아키텍처가 확장되어 가는 과정을 설명하고 있습니다. Scaling Pinterest


레디스 Data Types과 Commands




<< 설치 및 기술지원 Redis Introduction Redis Release Notes 4 >>

질문하거나 댓글을 보려면 클릭하세요.  댓글수 :    조회수 :

Email 답글이 올라오면 이메일로 알려드리겠습니다.