Redis-파티셔닝

파티셔닝은 모든 인스턴스가 키의 하위 집합 만 포함하도록 데이터를 여러 Redis 인스턴스로 분할하는 프로세스입니다.

파티셔닝의 이점

  • 많은 컴퓨터의 메모리 합계를 사용하여 훨씬 더 큰 데이터베이스를 허용합니다. 파티셔닝 없이는 단일 컴퓨터가 지원할 수있는 메모리 양으로 제한됩니다.

  • 계산 능력을 다중 코어 및 다중 컴퓨터로 확장하고 네트워크 대역폭을 다중 컴퓨터 및 네트워크 어댑터로 확장 할 수 있습니다.

파티셔닝의 단점

  • 여러 키와 관련된 작업은 일반적으로 지원되지 않습니다. 예를 들어 서로 다른 Redis 인스턴스에 매핑 된 키에 저장되어있는 경우 두 세트 간의 교차를 수행 할 수 없습니다.

  • 여러 키를 포함하는 Redis 트랜잭션은 사용할 수 없습니다.

  • 분할 단위가 핵심이므로 매우 큰 정렬 된 집합과 같이 하나의 거대한 키로 데이터 집합을 분할 할 수 없습니다.

  • 파티셔닝을 사용하면 데이터 처리가 더 복잡해집니다. 예를 들어 여러 RDB / AOF 파일을 처리해야하고 데이터 백업을 가져 오려면 여러 인스턴스 및 호스트에서 지속성 파일을 집계해야합니다.

  • 용량 추가 및 제거는 복잡 할 수 있습니다. 예를 들어 Redis Cluster는 런타임에 노드를 추가 및 제거하는 기능을 통해 대부분 투명한 데이터 재조정을 지원합니다. 그러나 클라이언트 측 파티셔닝 및 프록시와 같은 다른 시스템은이 기능을 지원하지 않습니다. 라는 기술Presharding 이와 관련하여 도움이됩니다.

분할 유형

Redis에는 두 가지 유형의 파티셔닝이 있습니다. 4 개의 Redis 인스턴스, R0, R1, R2, R3 및 user : 1, user : 2, ... 등과 같은 사용자를 나타내는 많은 키가 있다고 가정합니다.

범위 분할

범위 분할은 개체 범위를 특정 Redis 인스턴스로 매핑하여 수행됩니다. 이 예에서 ID 0에서 ID 10000까지의 사용자는 인스턴스 R0으로 이동하고 ID 10001에서 ID 20000까지의 사용자는 R1 등으로 이동한다고 가정합니다.

해시 파티셔닝

이러한 유형의 분할에서는 해시 함수 (예 : 모듈러스 함수)를 사용하여 키를 숫자로 변환 한 다음 데이터를 서로 다른 Redis 인스턴스에 저장합니다.