>데이터 베이스 >Redis >Redis 클러스터 원리

Redis 클러스터 원리

(*-*)浩
(*-*)浩원래의
2019-06-03 16:52:429796검색

Redis는 전형적인 no-sql, 즉 파이썬 사전처럼 키-값 쌍을 저장하는 비관계형 데이터베이스입니다. 메모리

에서 작동하므로 다양한 레벨 간의 캐시로 사용하기에 매우 적합합니다. 예를 들어 lvs의 4 레이어 포워딩 레이어와 nginx

Redis 클러스터 원리

특히 php-fpm과 같은 lnmp 아키텍처 애플리케이션 레이어 또는 Tomcat과 mysql 간의 캐시를 사용하여 상당한 양의 데이터가 있기 때문에 db에 대한 압박

단순한 키-값 대응일 뿐이며, 실제 비즈니스에서는 짧은 시간 내에 급격하게 변경되는 경우가 많습니다.

mysql과 같은 관계형 데이터베이스를 사용하는 경우. 저장하면 DB에 대한 액세스가 크게 증가하고 모든 요구 사항으로 인해 DB에 큰 부담을 주게 됩니다. 따라서 이제 대부분의 솔루션은 DB 계층 위의 모든 수준에서 다중 레벨 no-sql을 사용하는 것입니다

memcache redis 등과 마찬가지로 db에 대한 버퍼링을 제공합니다

Redis 클러스터

Redis 클러스터는 여러 Redis 노드 간에 데이터를 공유할 수 있는 시설 설치입니다.

Redis 클러스터는 동시에 여러 키를 처리해야 하는 Redis 명령을 지원하지 않습니다. 이러한 명령을 실행하려면 여러 Redis 노드 간에 데이터를 이동해야 하고 부하가 높은 조건에서는 이러한 명령으로 인해 Redis 클러스터의 성능이 저하되기 때문입니다. 예측할 수 없는 동작을 유발합니다.

Redis 클러스터는 파티셔닝을 통해 일정 수준의 가용성을 제공합니다. 클러스터의 일부 노드가 실패하거나 통신할 수 없더라도 클러스터는 계속해서 명령 요청을 처리할 수 있습니다.

Redis 클러스터는 다음 두 가지 이점을 제공합니다.

데이터를 자동으로 여러 노드로 분할하는 기능.

클러스터의 일부 노드가 실패하거나 통신할 수 없는 경우에도 계속해서 명령 요청을 처리할 수 있습니다.

클러스터 원리

모든 Redis 노드는 서로 연결되어 있으며(PING-PONG 메커니즘) 전송 속도와 대역폭을 최적화하기 위해 내부적으로 바이너리 프로토콜이 사용됩니다.

노드 장애는 클러스터 노드 중 절반 이상이 장애를 감지한 경우에만 적용됩니다.

클라이언트는 중간 프록시 계층이 필요 없이 Redis 노드에 직접 연결됩니다. 클라이언트는 클러스터의 모든 노드에 연결할 필요가 없으며 클러스터에서 사용 가능한 노드에 연결하기만 하면 됩니다.

redis-cluster는 모든 물리적 노드를 [0-16383] 슬롯에 매핑합니다. 클러스터는 노드<->슬롯<->값을 유지하는 역할을 담당합니다

Redis 클러스터에는 16384개의 해시 슬롯이 내장되어 있습니다. Redis 클러스터에 키-값을 배치할 때 redis는 먼저 crc16 알고리즘을 사용하여 키에 대한 결과를 계산한 다음 결과의 나머지 부분을 16384로 계산하므로 각 키는 0~1 사이의 해시 슬롯에 해당합니다. 16383, redis는 노드 수에 따라 대략 동일하게 해시 슬롯을 다른 노드에 매핑합니다

위 내용은 Redis 클러스터 원리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.