Redis 레디스
2017년 6월 4일 일요일
2017년 3월 24일 금요일
Redis CLUSTER Introduction
Redis CLUSTER Introduction
Redis CLUSTER Background
레디스 클러스터(cluster)에 들어가기 전에 Scale up, Scale out, Data Partitioning, Data Sharding, Topology에 대해 살펴봅니다.
성능 향상 방법 - How to improve performance
- 스케일 업(Scale Up): 단일 머신(machine)에 CPU, 디스크 등을 추가해서 성능을 향상하는 방법.
- 스케일 아웃(Scale Out): 적절한 성능의 머신(machine)을 추가해서 전체적인 성능을 향상하는 방법. ---» 소프트웨어가 scale out을 지원해야 합니다.
대량 데이터 처리, 저장 방법 - How to Process and Store Big Data
- 데이터 파티셔닝(Data Partitioning): 대량의 데이터를 처리하기 위해 DBMS 안에서 분할하는 방식입니다. 한 대의 DBMS만 설치하면 됩니다. 아래 그림은 테이블 하나를 여러가지 방법으로 분할한 것을 표시한 것입니다.
- 데이터 샤딩(Data Sharding): 대량의 데이터를 처리하기 위해 여러 개의 DBMS에 분할하는 기술이다. DBMS안에서 데이터를 나누는 것이 아니고 DBMS 밖에서 데이터를 나누는 방식이다. 그러므로 샤드 수에 따라 여러 대의 DBMS를 설치해야 한다.
클릭하면 더 많은 정보를 볼 수 있습니다.
2017년 2월 10일 금요일
Redis Introduction 레디스 소개
Redis Introduction
레디스 소개
여기는 간략히 적은 것입니다.
원문은 여기를 보세요.
주요 특징
- 데이터 저장소로 디스크가 아닌 메모리를 사용한다.
하지만, 데이터의 안전한 보관과 백업을 위해 다른 서버의 메모리에 실시간으로 복사본을 남길 수 있고, 디스크에 저장하는 방법을 제공한다. - 성능은 최고 일때 초당 10만회 수행한다. 서버에 따라 다르면 일반적으로 초당 2만 ~ 10만회 수행한다.
- 기본적으로 key-value 저장 방식이지만, Lists, Sets, Sorted Sets, Hashes 같은 다양한 저장 방식을 제공한다.
따라서 다양한 방식으로 데이터를 활용할 수 있다. - Redis Server Instance는 1 thread로 수행되며, 따라서 CPU 1 core만 사용한다.
그러므로, 서버 하나에 여러 개의 Redis Server를 띄워서 사용할 수 있다.
개발
- 개발자: Salvatore Sanfilippo, from Sicily, Italy
- 2009년에 초기 버전 발표
- 개발 동기: Salvatore는 Google Analytics 같은 실시간 웹 로그 분석 애플리케이션(lloogg.com)를 MySQL로 개발하던 중, 성능에 한계를 느껴 직접 Redis를 개발하게 되었다.
- 현재 안정적인 버전으로 3.0이 나와 있으며, 3.0부터 클러스터 기능이 제공된다.
Memory DB에 대한 생각
Microsoft Research's eScience Group manager Jim G
- 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-slave 기능은 실시간으로 데이터를 다른 서버에 복제할 수 있다.
이 기능을 이용하면 Master server가 down되어도, slave server로 접속하면 바로 서비스를 계속할 수 있다.
그리고 레디스의 성능을 거의 떨어뜨리지 않고 디스크 쓰기 기능을 제공한다.
레디스 시작 시 이 데이터를 읽어 들어므로 데이터 분실 위험은 거의 없다고 봐도 된다.
DB Engines Ranking
- 레디스가 전 세계 데이터베이스 순위에서 9 위를 차지하고 있다.
레디스가 이렇게 많이 사용되는지 잘 몰랐다면 이것은 놀라운 소식이 될것이다. - Key-Value Store 부분에서는 멤케시드를 저만치 물리치고 1위를 차지하고 있다.
레디스 Data Type과 Command
5 Data Type과 Command 요약 설명 애니메니션
Strings 소개와 명령어 리스트
Lists 소개와 명령어 리스트
Sets 소개와 명령어 리스트
Sorted Sets 소개와 명령어 리스트
Hashes 소개와 명령어 리스트
Common/keys 소개와 명령어 리스트
2017년 2월 7일 화요일
Redis slaveof
Redis Slaveof
레디스 slaveof 명령에 대한 설명입니다
명령
slaveof ip port 명령은 자신을 지정한 서버의 슬레이브(클론)로 만듭니다.
slaveof no one 명령은 현재 슬레이브(클론)인 자신을 마스터로 만듭니다.
레디스 slaveof 명령에 대한 설명입니다
명령
slaveof ip port 명령은 자신을 지정한 서버의 슬레이브(클론)로 만듭니다.
slaveof no one 명령은 현재 슬레이브(클론)인 자신을 마스터로 만듭니다.
- slaveof 사용법
- slave(노예) 용어에 대하여
- 클러스터에서 slaveof에 해당하는 명령은?
센티널 환경 slaveof 명령 실행 시 발생할 수 있는 다양 경우 정리
- 센티널과 slaveof no one
- failover-timeout
- 마스터에 대한 slaveof
자세한 내용은 여기를 보세요.
'노예(Slave)' 라는 용어에 대해서
현대에 '노예(Slave)'라는 용어는 적절치 않다고 봅니다. 그것이 IT 분야라고 해도 마찬가지 일 것입니다. 레디스 개발자인 살바토르(Salvatore Sanfilippo)도 이 용어의 문제점을 인정하여 redis.io에 다음과 같은 글(note)을 남겼습니다. 살바토르의 글을 한글로 요약한 것과 원문을 싣습니다.
"레디스를 설계할 때 용어에 대한 충분한 검토없이 마스터-슬레이브라는 용어를 선택하였다. 이것을 고치는데 수정 사항이 많이 발생하여 그대로 두는 대신, 'SLAVEOF NO ONE' 이라는 명령을 만들어 자유 선언에 대한 메시지로 삼으려한다."
"레디스를 설계할 때 용어에 대한 충분한 검토없이 마스터-슬레이브라는 용어를 선택하였다. 이것을 고치는데 수정 사항이 많이 발생하여 그대로 두는 대신, 'SLAVEOF NO ONE' 이라는 명령을 만들어 자유 선언에 대한 메시지로 삼으려한다."
A note about slavery: it's unfortunate that originally the master-slave terminology was picked for databases. When Redis was designed the existing terminology was used without much analysis of alternatives, however a SLAVEOF NO ONE command was added as a freedom message. Instead of changing the terminology, which would require breaking backward compatibility in the API and INFO output, we want to use this page to remind you that slavery is both a crime against humanity today and something that has been perpetuated throughout all human history. If slavery is not wrong, nothing is wrong. -- Abraham Lincoln원문(slaveof)
따라서 이후부터는 '슬레이브(slave)' 대신 '클론(clone)'이라는 용어를 사용하도록 하겠습니다. 슬레이브에는 복제(replication)라는 의미가 없지만 클론(clone)에는 복제의 의미가 있습니다. 슬레이브 서버의 역할은 '실시간 백업 서버(Real-Time Backup Server)입니다.
여담으로 'replicatee'라는 용어도 검토해 보았습니다. Replicatee를 사용한다면 그에 상응하게 master를 replicator라고 해야 하는데 master는 복제(replicate) 기능이 master의 일부 또는 옵션(option)이기 때문에 replicator로 변경하는 것은 적절치 않다고 봅니다.
결국 생명공학(biotechnology) 분야에서 복제의 의미로 많이 사용되는 clone을 slave 대신 사용하기로 하였습니다. 이후부터는 클론(clone)을 사용하도록 하겠습니다. 다만 새 용어에 따른 혼란을 줄이기 위해서 각 페이지의 첫 부분에 클론과 슬레이브를 같이 표기하고 이후에는 클론만 표기하겠습니다.
2017년 2월 7일 권대욱 權大昱 (Charlie Kwon)
여담으로 'replicatee'라는 용어도 검토해 보았습니다. Replicatee를 사용한다면 그에 상응하게 master를 replicator라고 해야 하는데 master는 복제(replicate) 기능이 master의 일부 또는 옵션(option)이기 때문에 replicator로 변경하는 것은 적절치 않다고 봅니다.
결국 생명공학(biotechnology) 분야에서 복제의 의미로 많이 사용되는 clone을 slave 대신 사용하기로 하였습니다. 이후부터는 클론(clone)을 사용하도록 하겠습니다. 다만 새 용어에 따른 혼란을 줄이기 위해서 각 페이지의 첫 부분에 클론과 슬레이브를 같이 표기하고 이후에는 클론만 표기하겠습니다.
2017년 2월 7일 권대욱 權大昱 (Charlie Kwon)
클러스터에서 SLAVEOF에 해당하는 명령은?
클러스터에서 "slaveof ip port"에 해당하는 명령은 "cluster replicate node-id" 입니다.
그럼, "slaveof no one"에 대항하는 명령은 무었일까요?
"cluster reset" 명령입니다.
cluster reset 명령은 클러스터로부터 자신을 독립시키는 명령입니다. 자신이 클론(slave)이라면 클러스터로부터 독립되면서 마스터로 승격됩니다.
그럼, "slaveof no one"에 대항하는 명령은 무었일까요?
"cluster reset" 명령입니다.
cluster reset 명령은 클러스터로부터 자신을 독립시키는 명령입니다. 자신이 클론(slave)이라면 클러스터로부터 독립되면서 마스터로 승격됩니다.
센티널 환경에서 SLAVEOF 명령에 대한 정리
위에서 살펴보았듯이 센티널이 모니터하고 있는 마스터와 클론에 대한 변경(slaveof)는 예상치 못한 변화가 시간 차를 두고 발생한다. 두 가지 경우로 구분해서 정리한다.
- 센티널 구성 시: 마스터-클론을 미리 구성한 다음 센티널 모니터를 시작한다.
- 센티널 운영 중: 마스터나 클론의 구성을 변경(slaveof)하기 전에 센티널이 마스터에 대한 모니터를 중지(remove)시키고 변경한다.
2017년 2월 6일 월요일
redis education 레디스 교육
Redis Education 레디스 교육
1. 레디스 개발자 핵심 과정(중요 명령어+실습) Redis Developer Core Course : 3시간
2. 레디스 관리자 핵심 과정(레디스 서버, 센티널, 클러스트) Redis Administrator Core Course: 3시간
3. 레디스 개발자 과정(명령어+실습) Redis Developer Full Course : 7시간
4. 레디스 서버 관리자 과정 Redis Server Administrator Course : 5시간
5. 레디스 센티널 관리자 과정 Redis Sentinel Administrator Course : 3시간
6. 레디스 클러스터 관리자 과정 Redis Cluster Administrator Course : 4시간
7. 레디스 내부 구조 과정 Redis Internel Structure Course : 4시간
자세한 내용은 여기를 보세요.
http://www.redisgate.com/redis/education/redis_education.php
1. 레디스 개발자 핵심 과정(중요 명령어+실습) Redis Developer Core Course : 3시간
2. 레디스 관리자 핵심 과정(레디스 서버, 센티널, 클러스트) Redis Administrator Core Course: 3시간
3. 레디스 개발자 과정(명령어+실습) Redis Developer Full Course : 7시간
4. 레디스 서버 관리자 과정 Redis Server Administrator Course : 5시간
5. 레디스 센티널 관리자 과정 Redis Sentinel Administrator Course : 3시간
6. 레디스 클러스터 관리자 과정 Redis Cluster Administrator Course : 4시간
7. 레디스 내부 구조 과정 Redis Internel Structure Course : 4시간
자세한 내용은 여기를 보세요.
http://www.redisgate.com/redis/education/redis_education.php
피드 구독하기:
글 (Atom)