Redis Introduction

<< 설치 및 기술지원 Commands >>

Redis Introduction

Redis logo

주요 특징

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

개발

Redis developer
  • 개발자: Salvatore Sanfilippo, from Sicily, Italy
  • 2009년에 초기 버전 발표
  • 개발 동기: Salvatore는 Google Analytics 같은 실시간 웹 로그 분석 애플리케이션(lloogg.com)를 MySQL로 개발하던 중, 성능에 한계를 느껴 직접 Redis(REmote DIctionary Server)를 개발하게 되었습니다.
  • 현재 안정적인 버전으로 4.0.6이 나와 있으며, 3.0부터 클러스터 기능이 제공됩니다.

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에 대한 일반적인 생각은 빠르다는 것과 데이터 분실에 대한 걱정일 것입니다.   빠르다는 것은 레디스의 최대 장점입니다.   데이터 분실도 적겅할 것이 없습니다.   레디스의 replication 기능은 실시간으로 데이터를 다른 서버에 복제할 수 있습니다.   이 기능을 이용하면 Master server가 down되어도, slave server로 접속해서 서비스를 계속할 수 있습니다.   그리고 레디스의 성능을 거의 떨어뜨리지 않고 디스크 쓰기 기능을 제공합니다.   레디스 시작 시 이 데이터를 읽어 들이므로 데이터 분실 위험은 거의 없다고 봐도 됩니다.

DB Engines Ranking

  • 레디스가 전 세계 데이터베이스 순위에서 8 위를 차지하고 있습니다.
    레디스가 이렇게 많이 사용되는지 잘 몰랐다면 이것은 놀라운 소식이 될것입니다.
  • 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 Commands >>

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

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