Queue
는 테이블의 프런트 엔드(전면)에서만 삭제 작업을 허용하고 테이블의 백엔드(후면)에서 삽입 작업을 수행하는 것이 특징입니다. 테이블 및 스택 마찬가지로 대기열은 작업이 제한된 선형 목록입니다. 삽입 작업을 수행하는 끝을 큐의 꼬리라고 하고 삭제 작업을 수행하는 끝을 큐의 헤드라고 합니다.
메시지 큐
는 전송 중에 메시지를 저장하는 컨테이너입니다. (redis 튜토리얼)
redis의 메시지 대기열
redis에서는 내장된 게시 및 구독 명령을 사용하여 "메시지 푸시" 및 "메시지 풀" 기능을 완료하여 메시지 대기열을 구현할 수 있습니다. 그러나 이 방법의 한 가지 단점은 소비자가 동시에 온라인에 있어야 한다는 것입니다. 그렇지 않으면 소비를 놓칠 수 있습니다.
메시지 대기열은 일반적으로 메모리에 저장하거나 디스크에 직접 저장할 수 있는 메시지 저장 전용 독립 클러스터를 사용합니다. 예를 들어, 일반적인 것들은 RabbitMQ, kafka, RocketMQ, ActiveMQ, zeromq 등입니다. 이들은 서로 다른 특성을 가지며 다양한 구현을 채택하므로 다양한 시나리오에서 메시지 작업 배포에 적합합니다. 그러나 이들의 필수적인 역할은 위에서 언급한 단일 인스턴스 환경의 Java "대기열"과 동일합니다. 즉, 메시지 전송 중에 메시지를 저장하는 컨테이너입니다. 단지 "분산" 환경으로 변환된 것일 뿐입니다.
Redis의 List(기본적으로 양방향 연결 목록)와 zset(순서 있는 집합)은 "메시지 대기열"의 컨테이너로 사용할 수 있으며 약간의 처리만으로 가용성이 높은 "메시지 대기열"을 실현할 수 있습니다. Redis를 사용하여 구현된 "경량" "메시지 대기열"에는 세 가지 주요 장점이 있습니다.
1 이제 Redis는 주요 시스템에서 널리 사용되었으며 다른 타사 프레임워크 및 API를 다시 도입할 필요가 없습니다.
2. 그리고 redis는 메모리 저장을 기반으로 하여 생산자와 소비자의 접근 속도가 매우 빠릅니다.
3. Redis 클러스터의 용량은 인스턴스를 추가하여 확장할 수 있습니다.
위의 세 가지 요구 사항을 충족하면 간단한 "메시지 대기열"을 구현할 수 있습니다.
위 내용은 Redis 메시지 큐를 이해하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!