목차
필요한 이유
Sharded Pub/Sub는 어떻게 작동합니까?
언제 사용해야합니까?
Sharded Pub/Sub 사용 방법
최종 생각
데이터 베이스 Redis Redis 7의 Sharded Pub/Sub는 무엇입니까?

Redis 7의 Sharded Pub/Sub는 무엇입니까?

Jul 01, 2025 am 12:01 AM
pub/sub Redis 7

Redis 7의 Sharded Pub/Sub는 여러 스레드에 메시지 트래픽을 배포하여 펍/하위 확장 성을 향상시킵니다. 전통적인 Redis Pub/Sub는 높은 하중 하에서 병목 현상이 될 수있는 단일 스레드 모델로 제한되었습니다. Sharded Pub/Sub를 사용하면 채널이 특정 I/O 스레드에 할당 된 파편으로 나뉩니다. 각 스레드는 할당 된 샤드의 메시지 전달을 처리하여 경합을 줄이고 성능 향상을 처리합니다. 주요 포인트는 다음과 같습니다. 1) 해싱을 통한 채널 간 매핑; 2) 구성 가능한 파편 수; 3) 샤드 구독에 대한 ssubscribe 사용; 4) 게시 중 자동 샤딩. 실시간 채팅 시스템 또는 IoT 플랫폼과 같은 많은 채널이있는 응용 프로그램에 이상적입니다. 이를 사용하려면 구독을 ssubscribe로 교체하고 게시는 변경되지 않았습니다. 클라이언트는 명시 적으로 샤딩을 선택해야하며 마이그레이션 중에 두 모드 모두 공존 할 수 있습니다.

Redis 7의 Sharded Pub/Sub는 무엇입니까?

Redis 7의 Sharded Pub/Sub는 전통적인 Redis Pub/Sub 시스템의 한계 중 하나 인 확장 성을 다루는 새로운 기능입니다. 실시간 메시징에 Redis를 사용하고 특히 높은 부하에 여러 채널 또는 패턴이있는 경우 이전에 성능 문제가 발생했을 수 있습니다. Sharded Pub/Sub는 메인 스레드를 통해 모든 것을 라우팅하는 대신 사용 가능한 모든 이벤트 루프 (또는 스레드)에 펍/서브 트래픽을 전파하여 도움을줍니다.

필요한 이유

Redis는 항상 단일 스레드 모델을 사용하여 명령을 처리했는데, 이는 단순하게 유지되지만 대량의 PUB/하위 메시지를 처리 ​​할 때 병목 현상이 될 수 있습니다. 이전 버전에서는 Redis가 스레드 I/O 활성화로 컴파일 된 경우에도 모든 PUB/SUB 작업이 여전히 기본 스레드를 통과했습니다. 이는 많은 가입자에게 메시지를 게시하거나 전달하는 것이 다른 운영을 차단할 수 있음을 의미합니다.

Redis 7을 사용하면 변경됩니다.


Sharded Pub/Sub는 어떻게 작동합니까?

Sharded Pub/Sub의 핵심 아이디어는 Sharding - 여러 스레드에 걸쳐 메시지 전달의 책임을 분배합니다. 작동 방식은 다음과 같습니다.

  • Redis는 채널을 "파편"이라는 논리적 그룹으로 나눕니다.
  • 각 샤드는 특정 I/O 스레드에 할당됩니다.
  • 클라이언트가 채널에 가입하면 구독은 해당 채널을 담당하는 샤드 (및 스레드)에 등록됩니다.
  • 채널에 게시 된 메시지는 크로스 스레드 동기화 오버 헤드를 피하며 동일한 스레드로 처리 및 전달됩니다.

이런 식으로 Redis는 CPU 코어 수가 증가함에 따라 PUB/Sub Performance를보다 효과적으로 확장 할 수 있습니다.

몇 가지 핵심 사항 :

  • 해싱 기능을 사용하여 채널 이름은 파편에 매핑됩니다.
  • 파편 수는 redis.conf ( pubsub_shard_streams_per_node )를 통해 구성 가능합니다.
  • 가입자는 자신이 구독 한 채널로부터 메시지 만받습니다. SSUBSCRIBE 에 대한 별도의 명령이 있습니다.

언제 사용해야합니까?

Sharded Pub/Sub 사용을 고려해야합니다.

  • 응용 프로그램은 많은 채널을 사용합니다.
  • 펍/하위 사용으로 인해 성능 병목 현상이 발생합니다.
  • 메시지 배포를 위해 더 많은 인스턴스를 추가하지 않고도 Redis를 가로로 확장하려고합니다.

다음과 같은 응용 프로그램에서 특히 유용합니다.

  • 많은 객실이나 주제를 가진 실시간 채팅 시스템.
  • 많은 사용자에게 알림 서비스 브로드 캐스트 업데이트.
  • 각 장치가 자체 채널에 상태 업데이트를 게시하는 IoT 플랫폼.

유스 케이스에 가입자가 많은 채널 만 포함 된 경우 표준 펍/서브가 여전히 괜찮을 수 있습니다. 그러나 채널 수를 확장하기 시작하거나 메시지 당 대기 시간이 낮아지면 샤드가 더 잘 맞습니다.


Sharded Pub/Sub 사용 방법

Sharded Pub / Sub 사용은 간단하지만 Classic SUBSCRIBE / PUBLISH Flow와는 다릅니다. 다음은해야 할 일입니다.

  • 샤드 방식으로 채널을 구독하려면 SUBSCRIBE 대신 SSUBSCRIBE 사용하십시오.
  • Sharded 채널에 게시하려면 PUBLISH 사용하십시오. 샤딩은 채널 이름을 기반으로 자동으로 처리됩니다.
  • 구독 취소하려면 SUNSUBSCRIBE 사용하십시오.

예:

 # 샤드 채널을 구독하십시오
client1> ssubscribe mychannel

# 메시지 게시 - 올바른 스레드로 처리
Client2> MyChannel 게시 "Hello Sharded World"

명심하십시오 :

  • 클라이언트는 SSUBSCRIBE 명시 적으로 사용하여 샤드를 활용해야합니다.
  • 동일한 연결에서는 클래식 SUBSCRIBESSUBSCRIBE 혼합 할 수 없습니다.
  • Redis 7 용으로 업데이트되지 않은 도구 또는 클라이언트는 수정되지 않는 한 Sharded Pub/Sub를 사용하지 않습니다.

또한 Redis 7은 두 모드를 모두 지원하므로 앱의 부분을 점차적으로 마이그레이션하여 샤드 구독을 사용하면서 다른 모드를 기존 모델에 보관할 수 있습니다.


최종 생각

Redis 7의 Sharded Pub/Sub는 Redis의 실시간 메시징 기능에 필요한 확장 성 개선을 제공합니다. 다른 스레드에 채널을 할당함으로써 Redis는 단순성이나 신뢰성을 희생시키지 않으면 서 훨씬 높은 처리량을 처리 할 수 ​​있습니다.

Scale, 특히 PUB/Sub-Heavy 환경에서 Redis와 함께 작업하는 경우이 기능을 업그레이드하고 시도하는 것이 좋습니다.

그것은 기본적으로 그다지 복잡하지는 않지만 메시징 플랫폼으로서 Redis의 큰 발전입니다.

위 내용은 Redis 7의 Sharded Pub/Sub는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제

Redis 인스턴스를 보호하는 방법? Redis 인스턴스를 보호하는 방법? Jul 15, 2025 am 12:06 AM

Redis 보안을 보장하려면 여러 측면에서 구성해야합니다. 1. 액세스 소스 제한, 특정 IP에 바인드를 수정하거나 방화벽 설정을 결합하십시오. 2. 비밀번호 인증 활성화, 요구 사항을 통해 강력한 암호를 설정하고 올바르게 관리하십시오. 3. 위험한 명령을 닫고 이름 바꾸기 명령을 사용하여 Flushall, Config 등과 같은 고위험 작업을 비활성화합니다. 4. 높은 보안 요구 시나리오에 적합한 TLS 암호화 된 통신 활성화; 5. 버전을 정기적으로 업데이트하고 로그를 모니터링하여 이상을 감지하고 적시에 취약점을 수정하십시오. 이러한 조치는 공동으로 Redis 인스턴스의 보안 라인을 구축합니다.

psync (부분 재 동기화)는 어떻게 작동합니까? psync (부분 재 동기화)는 어떻게 작동합니까? Jul 29, 2025 am 12:27 AM

PSYNC는 Redis Master-Slave Replication의 부분 재 동기화 메커니즘으로, 슬레이브 서버가 연결이 끊어진 후 연결이 끊어진 후 손실 된 데이터 만 동기화하는 데 사용됩니다. 핵심은 기본 서버에서 유지 관리하는 큐인 ReplicationBackLog에 의존합니다. 기본 크기는 1MB이며 가장 최근에 실행 된 쓰기 명령을 저장합니다. 슬레이브 서버가 다시 연결되면 psync 명령이 전송되고 마스터 서버는 이에 따라 부분 동기화를 수행 할 수 있는지 여부를 결정합니다. 1. runid는 일관성이 있어야합니다. 2. 오프셋은 백 로그 버퍼에 있어야합니다. 조건이 충족되면 오프셋에서 데이터가 계속 전송되며, 그렇지 않으면 전체 동기화가 트리거됩니다. psync의 성공률을 향상시키는 방법은 다음과 같습니다. 1. 적절하게 repl-b 증가

Zrangebyscore를 사용하여 점수로 다양한 멤버를 검색하는 방법은 무엇입니까? Zrangebyscore를 사용하여 점수로 다양한 멤버를 검색하는 방법은 무엇입니까? Jul 21, 2025 am 12:19 AM

주문한 Redis 세트의 점수를 기준으로 멤버 목록을 얻으려면 Zrangebyscore 명령을 사용해야합니다. 1) 기본 구문은 Zrangebyscorekeyminmax이며 지정된 점수 범위 내에서 구성원을 얻는 데 사용됩니다. 2) Pagination Query는 LimitOffSetCount를 추가하여 구현할 수 있습니다. 3) 경계 값은 (최소 또는 최대 이전의 기호; 4) wissscores 플래그를 추가하여 멤버와 그 점수를 동시에 추가하여 배제 할 수 있습니다.

비동기 및 동기 복제의 차이점은 무엇입니까? 비동기 및 동기 복제의 차이점은 무엇입니까? Jul 16, 2025 am 12:45 AM

동기 복제는 기본 시스템에 기록 될 때마다 실시간으로 대기 시스템에 복사되어 데이터 손실이 제로이지만 성능에 영향을 미칩니다. 비동기 복제는 먼저 쓰기를 확인한 다음 복제를 지연시켜 성능이 좋지만 데이터를 잃을 수 있습니다. 재무, 고 가용성 클러스터 및 데이터 손실을 허용 할 수없는 시나리오와 같은 중요한 시스템에 적합하도록 동기 복제를 선택하십시오. 데이터웨어 하우스, 백업 시스템 및 고성능 요구 사항이있는 분산 애플리케이션에 적합하도록 비동기 복제를 선택하십시오. 데이터 중요성, 네트워크 조건 및 성능 요구 사항에 따라 사용할 방법을 결정하십시오.

클라이언트는 클러스터에서 이동 또는 리디렉션을 어떻게 처리합니까? 클라이언트는 클러스터에서 이동 또는 리디렉션을 어떻게 처리합니까? Jul 16, 2025 am 01:25 AM

AmovedErrorIndicatesAperManentKeyReloctionDuetOclustoPologyChanges, ClientStoupDateslot-nodemappingsandretryonthenewNode.1.MovedSponsESNEWNODEADDRESS.2.CLIENGSHOUDDUPDUTUPDATENTERMAPPINGSACSCO

set, setnx 및 setex의 차이점은 무엇입니까? set, setnx 및 setex의 차이점은 무엇입니까? Jul 25, 2025 am 12:40 AM

setSetSetSakeyWithOptionAlConditionSandexpiration, setNxSetSakeyOnlyIfitDoesn'Texist, andSetexSetSakeyWitHaneXpiration.1.setOffersFlexibilityWithOptionsIficeLeEx (MilliseConds), NX (setonlyifnoTexists), 및 XEXEXESSESS (setOnlyifexestorists)

버전 7의 Redis 기능은 무엇입니까? 버전 7의 Redis 기능은 무엇입니까? Jul 28, 2025 am 12:05 AM

redisftionsInversion7solvesswithtraditionWithTraditionAlluascriptionBidingModular, reusableserver-sideLogic.1.theyAllOwtructuredFunctionDefinitionForganizationAndAndainability.2

LRANGE를 사용하여 목록에서 다양한 요소를 검색하는 방법은 무엇입니까? LRANGE를 사용하여 목록에서 다양한 요소를 검색하는 방법은 무엇입니까? Jul 23, 2025 am 12:01 AM

LRANGE는 REDIS 목록에서 지정된 범위의 요소를 제거하는 데 사용되며 양수 및 음성 지수를 지원합니다. 1. 전체 목록에 0 ~ -1을 사용하십시오. 2. 첫 번째 n의 경우 0 ~ N-1을 사용하십시오. 3. 마지막 n에는 -n ~ -1을 사용하고; 4. 페이지에 -n ~ -1을 사용하십시오. 4. 페이징을 사용하여 시작과 정지로 제어하십시오. 시작은 길이 또는 정지가 끝을 초과하고, 비어 있거나 유효한 부분을 반환하며, 시작> 스톱이 비어 있는데도 반환되며, 이는 캐시, 로그, 큐 및 기타 시나리오에 적합합니다.

See all articles