현재 위치: > 최신 기사 목록> Redis 메시지를 지속적으로 듣고 처리하는 방법은 무엇입니까?

Redis 메시지를 지속적으로 듣고 처리하는 방법은 무엇입니까?

gitbox 2025-06-17

Redis 메시지 구독 및 게시

Redis는 문자열, 해시, 목록, 컬렉션 등과 같은 여러 데이터 구조를 지원하는 오픈 소스 메모리 데이터 구조 스토리지 시스템입니다. 또한 메시지 구독 및 게시 기능을 제공하여 클라이언트가 지정된 채널을 구독하고 채널에 새 메시지를 게시 할 때 알림을받을 수 있습니다. 이 기사는 PHP에서 구독 및 Redis 메시지의 지속적인 청취를 구현하는 방법을 소개합니다.

Redis Extension 패키지를 설치하십시오

Redis Extension을 사용하기 전에 먼저 설치해야합니다. PECL 명령을 통해 설치하고 다음 명령을 실행할 수 있습니다.

 pecl install redis

시스템이 PECL을 설치하지 않은 경우 다음 명령을 통해 설치할 수 있습니다.

 sudo apt-get install php-pear

Redis에 연결하십시오

Redis Extension 패키지를 설치 한 후 다음 단계는 Redis 서버에 연결하는 것입니다. Redis 클래스의 연결 방법을 사용하여 연결을 설정하십시오. 코드 예제는 다음과 같습니다.

 $redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo 'redis connected';

위 코드에서 Connect 메소드의 첫 번째 매개 변수는 Redis 서버의 IP 주소이며 두 번째 매개 변수는 포트 번호입니다. 연결이 성공하면 프로그램이 "Redis Connected"메시지를 출력합니다.

메시지 구독 및 처리

Redis에 성공적으로 연결 한 후 메시지 채널에 가입하고 메시지 처리를 시작할 수 있습니다. Redis는 구독 및 psubscribe 방법을 제공합니다.

구독 방법은 아래와 같이 하나 이상의 지정된 채널을 가입합니다.

 $redis->subscribe(array('channel1', 'channel2'), function($redis, $channel, $message) {
    echo "Received message from channel: {$channel}, message: {$message}\n";
});

위의 코드에서 구독 메소드의 첫 번째 매개 변수는 채널 배열이고 두 번째 매개 변수는 콜백 함수입니다. 콜백 함수는 메시지를 수신 한 후에 실행됩니다.

psubscribe 메소드는 와일드 카드 문자를 사용하여 여러 채널을 구독하는 것을 지원합니다. 예제는 다음과 같습니다.

 $redis->psubscribe(array('channel.*'), function($redis, $channel, $message) {
    echo "Received message from channel: {$channel}, message: {$message}\n";
});

위의 코드는 '채널'으로 시작하는 모든 채널에 가입하는 것을 의미합니다.

Redis 메시지를 지속적으로 듣고 구독하고 처리하십시오.

프로그램이 메시지를 지속적으로 듣고 실시간으로 처리하기 위해서는 메시지를 지속적으로 듣는 데 사용될 수 있습니다. 이 기능을 구현하는 코드는 다음과 같습니다.

 $redis->subscribe(array('channel'), function($redis, $channel, $message) {
    echo "Received message from channel: {$channel}, message: {$message}\n";
    // 처리 된 메시지 처리
});
while(true) {
    $redis->ping();
    sleep(1);
}

이 코드에서 while 루프는 핑 방법을 통해 Redis 연결이 정상인지 여부를 지속적으로 감지하고 1 초에 한 번 잠을 잤습니다.

완전한 코드 예제

다음은 Redis 메시지 구독 및 지속적인 청취를 구현하기위한 완전한 PHP 코드 예제입니다.

 
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->subscribe(array('channel'), function($redis, $channel, $message) {
    echo "Received message from channel: {$channel}, message: {$message}\n";
    // 처리 된 메시지 처리
});
while(true) {
    $redis->ping();
    sleep(1);
}

요약

이 기사를 통해 PHP의 Redis Extension 패키지를 사용하여 구독 및 Redis 메시지를 프로세스하는 방법을 배웠습니다. 우리는 메시지 채널에 메소드를 구독하고 psubscribe하는 방법을 설명하고 While Loop을 사용하여 메시지를 지속적으로 듣고 모든 수신 된 메시지가 실시간으로 처리되도록합니다.