Redis 파티션
파티셔닝은 데이터를 여러 Redis 인스턴스로 분할하는 프로세스이므로 각 인스턴스는 키의 하위 집합만 저장합니다.
파티셔닝의 장점
여러 컴퓨터의 메모리를 합산하여 더 큰 데이터베이스를 구축할 수 있습니다.
멀티 코어와 여러 컴퓨터를 통해 컴퓨팅 성능을 확장할 수 있습니다. 여러 컴퓨터와 네트워크 어댑터를 통해 네트워크 대역폭을 확장할 수 있습니다.
파티셔닝의 단점
redis의 일부 기능은 파티셔닝 측면에서 제대로 작동하지 않습니다.
여러 키와 관련된 작업은 일반적으로 지원되지 않습니다. 예를 들어 두 세트가 서로 다른 Redis 인스턴스에 매핑되면 두 세트에 대한 교차 작업을 수행할 수 없습니다.
여러 키가 포함된 Redis 트랜잭션은 사용할 수 없습니다.
파티션을 사용하면 데이터 처리가 더 복잡해집니다. 예를 들어 여러 rdb/aof 파일을 처리하고 여러 인스턴스 및 호스트에서 영구 파일을 백업해야 합니다.
용량을 추가하거나 삭제하는 것도 더 복잡합니다. 대부분의 Redis 클러스터는 런타임 시 데이터 밸런싱을 위해 투명하게 노드를 추가하고 삭제하는 기능을 지원하지만 클라이언트 파티션 및 프록시와 같은 다른 시스템은 이 기능을 지원하지 않습니다. 그러나 사전 샤딩이라는 기술이 이 작업에 도움이 될 수 있습니다.
파티션 유형
Redis에는 두 가지 유형의 파티션이 있습니다. 4개의 Redis 인스턴스 R0, R1, R2, R3과 사용자를 나타내는 여러 키(예: user:1 및 user:2)가 있다고 가정합니다. 특정 키에 대해 키를 저장할 인스턴스를 선택하는 다양한 방법이 있습니다. . 즉, 특정 키를 특정 Redis 서비스에 매핑하는 다양한 시스템이 있습니다.
범위 분할
가장 간단한 분할 방법은 범위 분할을 사용하는 것입니다. 이는 특정 범위의 개체를 특정 Redis 인스턴스에 매핑하는 것입니다.
예를 들어, 0부터 10000까지의 ID를 가진 사용자는 인스턴스 R0에 저장되고, 10001부터 20000까지의 ID를 가진 사용자는 R1에 저장되는 식입니다.
이 방법은 실행 가능하며 실제로 사용할 수 있습니다. 단점은 범위에서 인스턴스까지 매핑 테이블이 있다는 것입니다. 이 테이블은 관리가 필요하고 다양한 객체에 대한 매핑 테이블도 필요하므로 일반적으로 Redis에는 좋은 방법이 아닙니다.
해시 파티셔닝
또 다른 파티셔닝 방법은 해시 파티셔닝입니다. 이는 모든 키에 대해 작동하며 object_name일 필요는 없습니다:
crc32 해시 함수 사용과 같은 해시 함수를 사용하여 키를 숫자로 변환합니다. foobar 키에서 crc32(foobar)를 실행하면 93024922와 유사한 정수가 출력됩니다.
이 정수의 모듈로를 가져와 0-3 사이의 숫자로 변환합니다. 이 정수는 4개의 Redis 인스턴스 중 하나에 매핑될 수 있습니다. 93024922 % 4 = 2, 이는 foobar 키가 R2 인스턴스에 저장되어야 함을 의미합니다. 참고: 모듈로 연산은 나눗셈의 나머지 부분을 제거하는 것이며 일반적으로 많은 프로그래밍 언어에서 % 연산자를 사용하여 구현됩니다.