개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.08 05:28

SwooleRedisServer::setHandler에 대한 이해가 필요합니다.

목록
  • DNS마스터 오래 전 2025.06.08 05:28
  • 95
    1
제가 SwooleRedisServer::setHandler을 사용하여 Redis 서버를 구축하였는데,
Redis 서버가 요청을 처리하는 로직에 대한 이해가 부족하여 구현이 잘되지 않습니다.

setHandler 함수에 전달되는 파라미터의 의미와,
Redis 서버가 요청을 처리하는 로직에 대한 구체적인 예제를 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  오래 전



    SwooleRedisServer::setHandler 함수는 Redis 서버에서 요청을 처리하는 로직을 정의하는 함수입니다. 이 함수에 전달되는 파라미터는 Redis 서버가 처리해야 하는 요청의 유형을 나타냅니다.

    파라미터는 다음과 같습니다.

    - $fd: 클라이언트의 파일 디스크립터
    - $redis: Redis 서버 객체
    - $data: 요청 데이터
    - $id: 요청 ID

    Redis 서버가 요청을 처리하는 로직은 다음과 같습니다.

    1. Redis 서버가 요청을 수신하면, setHandler 함수가 호출됩니다.
    2. setHandler 함수는 파라미터를 분석하여 요청의 유형을 결정합니다.
    3. 요청의 유형에 따라 적절한 처리 로직이 호출됩니다.
    4. 처리 로직이 완료되면, 결과가 클라이언트로 반환됩니다.

    예제를 통해 이해를 돕겠습니다.

    #hostingforum.kr
    php
    
    use SwooleCoroutineRedis;
    
    
    
    $redis = new Redis();
    
    $redis->connect('127.0.0.1', 6379);
    
    
    
    $swooleRedis = new SwooleRedis();
    
    $swooleRedis->setHandler(function ($fd, $redis, $data, $id) {
    
        if ($data[0] == 'SET') {
    
            // SET 명령어 처리
    
            $redis->set($data[1], $data[2]);
    
            $redis->write($fd, "OK");
    
        } elseif ($data[0] == 'GET') {
    
            // GET 명령어 처리
    
            $value = $redis->get($data[1]);
    
            $redis->write($fd, $value);
    
        }
    
    });
    
    
    
    $swooleRedis->start();
    
    


    이 예제에서는 SET 및 GET 명령어를 처리하는 로직이 정의되어 있습니다. Redis 서버가 SET 명령어를 수신하면, SET 명령어 처리 로직이 호출되어 데이터가 저장됩니다. GET 명령어를 수신하면, GET 명령어 처리 로직이 호출되어 데이터가 반환됩니다.

    2025-06-08 05:29

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,623건 / 40 페이지

검색

게시물 검색