상황 ioredis 클라이언트를 사용하여, pipeline 기능을 사용하여 Redis Cluster에 Key와 Value를 저장하려고 했는데, 다음과 같은 에러가 발생했다. Error: All keys in the pipeline should belong to the same slots allocation group Redis Cluster를 사용하는 경우, MSET 및 MGET과 같은 멀티 키 명령을 사용할 수 없으며, ioredis 클라이언트에서 제공하는 pipeline의 경우에도 사용할 수 없다. 그래서 위와 같은 에러가 발생하게 되었다. 해결 pipeline을 사용하려면, 같은 슬롯인 경우만 가능하다는 것이다. 그래서 생각한 방법이 10개의 Key를 저장한다고 가정한 상황에서 3개의 슬롯이 존재하..
Docker를 활용해서 Redis Standalone 및 Cluster를 모니터링하고 있는데, 매 번 docker 명령어를 입력해서 해야 하는 번거로움이 있어서 docker-compose.yml 파일로 만들어봤다. version: '3' services: prod-redis-stats: image: insready/redis-stat:latest container_name: prod-redis-stats ports: - '13790:63790' command: [ '--verbose', # 추가 정보 보기 '--server', '127.0.0.1:6379', '127.0.0.2:6379', ] stage-redis-st..
Redis 클라이언트를 통해 Redis에 접속하면, info all의 명령으로 정보를 수집할 수 있는 Redis 자체의 Metric이 있다. Memory used_memory_rss Redis가 현재 사용하고 있는 실제 물리 메모리 양 실제 물리 메모리 사용량이 많으면, Swap이 일어나서 성능이 떨어진다. used_memory 현재 Redis에 할당된(사용하고 있는) 메모리 양 jemalloc의 값을 저장하고 있다가 보여준다. mem_fragmentation_ratio 실제 사용하는 메모리(used_memory)에 비해 Redis가 OS에 할당받은 메모리(used_memory_rss)의 양이 많을 경우, 낭비되는 메모리가 생기고 이러한 경우에 mem_fragmentation_ratio 수치가 올라간다...

클러스터 특징 1개의 클러스터에는 16,384개의 해시 슬롯을 사용할 수 있다. 16,384개의 해시 슬롯은 샤드로 나눌 수 있다. 최대 500개까지 샤드를 나눌 수 있는데, 제한되는 부분들이 있다. 샤드가 500개인 경우, 복제본 노드는 하나도 생성할 수 없음 샤드가 250개인 경우, 복제본 노드는 0 ~ 1개만 생성할 수 있음 샤드가 166개인 경우, 복제본 노드는 0 ~ 2개만 생성할 수 있음 샤드가 125개인 경우, 복제본 노드는 0 ~ 3개만 생성할 수 있음 샤드가 100개인 경우, 복제본 노드는 0 ~ 4개만 생성할 수 있음 샤드가 83개 이하인 경우, 복제본 노드는 0 ~ 5개를 자유롭게 생성할 수 있음 노드는 Primary와 Replica로 구분된다. 해시 함수는 CRC-16 함수를 사용한..