레디스는 메모리 캐시로 disk i/o 에 비해 속도상 이점이 있으므로 빠른 처리를 필요로 할 때 이용할 수 있다.
useCase로는 chat, response cache, 자주 조회되는 데이터, session manager, pub-sub 등 다양하다. (공식문서 참고: https://redis.com/solutions/use-cases)
레디스를 클러스터 방식으로 사용하는 이유는 클라이언트 입장에서 레디스가 죽지 않고 계속 서빙되도록 하기 위함이다. 최소 3개 이상의 master를 두어야하며 몇 가지 제약사항이 따른다. 이를 통해, 안정적인 레디스 서비스를 제공할 수 있다.
nodejs 런타임에서 ioredis를 이용하여 클러스터를 설정하고자 하였는데 찾기가 어려웠다 단일 노드에 대한 사용은 많이 나오는데 클러스터 셋업부터 연결까지에 대한 글이 총정리된 것이 없었다. 본 글에 작성한 다음과 같은 방식을 따라가면 비교적 손쉽게 이해 및 세팅을 할 수 있다. 무작정 세팅을 하기보다는 레디스에 대한 이해를 기반으로 왜 안되는지에 대해 추론하는 것이 중요하다.
1. 레디스에 대한 기본적 개념 이해(레디스란 무엇인지, 레디스 클러스터, 샤딩, 마스터노드, 슬레이브 노드 등 )
nhn 클라우드 포스팅 추천
https://meetup.nhncloud.com/posts/224
https://meetup.nhncloud.com/posts/225
https://meetup.nhncloud.com/posts/226
https://meetup.nhncloud.com/posts/227
2. redis-cli를 이용하여 단일노드에 대한 사용법 익히기(get,set, keys 등 기본적인 명령어)
3. nodejs 런타임에서 ioredis를 이용하여 단일노드에 대한 연결 테스트(get, set)
4. redis-cli를 이용하여 클러스터 세팅 및 연결 확인
공식문서를 참고하여 만든 셋업 레포: https://github.com/parkhojeong/redis-cluster-environment
클러스터 셋업 공식문서 https://redis.io/docs/management/scaling/#create-and-use-a-redis-cluster
공식 문서를 통하여 셋업을 하고 나면 6개의 노드로 클러스터를 띄우는데, CLUSTER SLOTS로 명령어를 쳐보면 다음과 같이 노드의 id와 샤딩이 세개로 된 것을 볼 수 있다.
5. nodejs 런타임에서 ioredis를 이용하여 클러스터에 대한 연결 테스트(get, set)
import Redis from "ioredis";
const cluster = new Redis.Cluster([
{
port: 7001,
host: "127.0.0.1"
}
]);
await cluster.get("c", "123");
await cluster.set("c", "123");
참고
https://developer.redis.com/operate/redis-at-scale/scalability/exercise-1
'웹(web) > 백엔드 기초' 카테고리의 다른 글
Ubuntu screen 사용법 (0) | 2021.08.22 |
---|---|
Web server (0) | 2020.06.30 |
HTTP Protocol Method (0) | 2020.06.30 |