PHP는 어떻게 Redis 메시지 구독에 대한 지속적인 모니터링을 구현하고 멤버십 포인트를 처리합니까?

WBOY
풀어 주다: 2023-09-05 19:42:02
원래의
1309명이 탐색했습니다.

PHP는 어떻게 Redis 메시지 구독에 대한 지속적인 모니터링을 구현하고 멤버십 포인트를 처리합니까?

PHP는 어떻게 Redis 메시지 구독을 지속적으로 모니터링하고 회원 포인트를 처리할 수 있나요?

소개

Redis는 메시지 대기열 구현으로 자주 사용되는 고성능 키-값 저장 시스템입니다. 개발 과정에서 멤버십 포인트 변경 처리 등 메시지의 실시간 처리가 필요한 시나리오를 자주 접하게 됩니다. 이 기사에서는 PHP를 사용하여 Redis 메시지 구독을 지속적으로 모니터링하고 멤버 포인트의 변경 사항을 처리하는 방법을 소개합니다.

준비

시작하기 전에 Redis 확장 프로그램을 설치하고 Composer 도구를 설치해야 합니다.

먼저 Redis 확장 프로그램을 설치했는지 확인하세요. 다음 명령으로 확인할 수 있습니다.

php -m | grep redis
로그인 후 복사

출력에 "redis"가 표시되면 Redis 확장이 설치된 것입니다. 설치되어 있지 않은 경우 운영 체제 및 PHP 버전에 따라 해당 Redis 확장을 설치하십시오.

다음으로 Composer 도구를 설치해야 합니다. [https://getcomposer.org/](https://getcomposer.org/)를 방문하여 공식 가이드에 따라 설치하시기 바랍니다.

Create Project

먼저 명령줄에서 새 폴더를 만들고 해당 폴더로 이동합니다.

mkdir redis-subscribe
cd redis-subscribe
로그인 후 복사

다음으로 Composer를 사용하여 새 PHP 프로젝트를 초기화합니다.

composer init
로그인 후 복사

안내에 따라 프로젝트 이름, 설명, 기타 정보를 입력하세요. 완료되면 composer.json 파일이 현재 폴더에 생성됩니다. composer.json文件。

然后,我们需要安装一个Redis客户端库,这里我们选择使用predis/predis库。

composer require predis/predis
로그인 후 복사

安装完成后,Composer会在当前文件夹下生成一个vendor文件夹,其中包含了所需的依赖库。

接下来,创建一个新的PHP文件index.php,用于编写Redis消息订阅和积分处理的代码。

<?php

require 'vendor/autoload.php';

use PredisClient;

$redis = new Client();

$redis->subscribe(['member-points'], function ($redis, $channel, $message) {
    // 处理消息
    $data = json_decode($message, true);

    // 根据消息类型处理积分
    if ($data['type'] === 'add_points') {
        addPoints($data['user_id'], $data['points']);
    } elseif ($data['type'] === 'deduct_points') {
        deductPoints($data['user_id'], $data['points']);
    }
});

function addPoints($userId, $points)
{
    // 处理增加积分逻辑
    echo "增加{$points}积分给用户{$userId}" . PHP_EOL;
}

function deductPoints($userId, $points)
{
    // 处理扣除积分逻辑
    echo "扣除{$points}积分给用户{$userId}" . PHP_EOL;
}
로그인 후 복사

以上代码通过require 'vendor/autoload.php';引入了Composer生成的自动加载器。然后,创建了一个Redis客户端实例$redis,使用$redis->subscribe()方法进行消息的订阅和处理。

$redis->subscribe()方法中,我们使用了匿名函数作为参数,并在函数体中执行了处理消息的逻辑。这里我们假设消息的结构是一个JSON字符串,包含了user_idpoints两个字段,以及一个type字段用于标识消息类型。根据不同的消息类型,调用相应的处理函数。

在处理函数中,我们对相应用户的积分进行相应的增加或扣除操作。这里只是简单地打印了一条消息,实际应用中可以根据需求进行相应的业务逻辑处理。

启动监听

现在,我们可以启动Redis消息监听,来处理会员积分的变动了。在命令行中执行以下命令:

php index.php
로그인 후 복사

此时,PHP脚本会进入监听状态,实时等待Redis中的消息。

发送消息

在另外一个终端中,我们可以使用Redis的PUBLISH

그런 다음 Redis 클라이언트 라이브러리를 설치해야 합니다. 여기서는 predis/predis 라이브러리를 사용하도록 선택합니다.

redis-cli PUBLISH member-points '{"type":"add_points","user_id":123,"points":100}'
로그인 후 복사
설치가 완료되면 Composer는 현재 폴더 아래에 필요한 종속 라이브러리가 포함된 vendor 폴더를 생성합니다.

다음으로 Redis 메시지 구독 및 포인트 처리를 위한 코드를 작성하기 위해 새 PHP 파일 index.php를 만듭니다.

rrreee

위 코드는 require 'vendor/autoload.php';를 통해 Composer가 생성한 오토로더를 소개합니다. 그런 다음 Redis 클라이언트 인스턴스 $redis가 생성되고 $redis->subscribe() 메서드를 사용하여 메시지를 구독하고 처리합니다.

$redis->subscribe() 메소드에서는 익명 함수를 매개변수로 사용하고 함수 본문에서 메시지 처리 로직을 실행합니다. 여기서는 메시지 구조가 user_idpoints라는 두 개의 필드와 메시지를 식별하는 type 필드를 포함하는 JSON 문자열이라고 가정합니다. 유형. 다양한 메시지 유형에 따라 해당 처리 기능이 호출됩니다. 🎜🎜처리 기능에서는 그에 따라 해당 사용자의 포인트를 가산하거나 차감합니다. 여기서는 간단하게 메시지를 출력하며, 실제 응용에서는 필요에 따라 해당 비즈니스 로직 처리를 수행할 수 있습니다. 🎜🎜모니터링 시작🎜🎜이제 Redis 메시지 모니터링을 시작하여 회원 포인트 변경 사항을 처리할 수 있습니다. 명령줄에서 다음 명령을 실행합니다. 🎜rrreee🎜 이때 PHP 스크립트는 청취 상태로 들어가 실시간으로 Redis에서 메시지를 기다립니다. 🎜🎜메시지 보내기🎜🎜다른 터미널에서 Redis의 PUBLISH 명령을 사용하여 회원 포인트 변경에 대한 메시지를 게시할 수 있습니다. 예를 들어, 다음 명령을 사용하여 포인트를 늘리라는 메시지를 보낼 수 있습니다. 🎜rrreee🎜 그러면 PHP 스크립트 출력에서 ​​해당 처리 결과를 볼 수 있습니다. 🎜🎜요약🎜🎜위 단계를 통해 PHP에서 Redis 메시지 구독에 대한 지속적인 모니터링을 성공적으로 구현했으며, 다양한 메시지 유형에 따른 회원 포인트 변경을 처리했습니다. 이 Redis 기반 메시지 구독 및 처리 메커니즘은 다양한 실시간 메시지 처리 시나리오에 유연하게 적용될 수 있습니다. 🎜🎜이 기사가 PHP를 사용하여 Redis 메시지 구독을 구현하고 멤버십 포인트를 처리하는 방법을 이해하는 데 도움이 되기를 바랍니다. 질문이나 제안사항이 있으시면 토론을 위해 메시지를 남겨주세요. 🎜

위 내용은 PHP는 어떻게 Redis 메시지 구독에 대한 지속적인 모니터링을 구현하고 멤버십 포인트를 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!