연습 - Streams를 사용하여 메시지 중개

완료됨

소매 애플리케이션은 현재 사내 소프트웨어를 실행할 때 서버 쪽 파일을 사용하여 모바일 디바이스의 관련 정보를 기록합니다. 아쉽게도 수많은 클라이언트 간 동시성, 누락된 데이터, 작업 읽기 도는 쓰기를 방지하는 잠금을 포함하여 이 솔루션을 스케일 아웃하는 데 여러 문제가 있었습니다. 팀은 메시지 브로커 역할을 할 수 있는 미들웨어 솔루션을 진행하기로 결정했습니다.

이 연습에서는 Azure Cache for Redis 인스턴스에서 Streams를 구현합니다.

스트림에 항목 추가

XADD 명령을 사용하여 새 스트림 또는 기존 스트림에 항목을 추가합니다. 스트림이 아직 없는 경우에는 스트림이 자동으로 만들어집니다.

  1. 샌드박스를 활성화하는 데 사용한 것과 동일한 계정을 사용하여 Azure Portal에 로그인합니다.

  2. Azure 서비스 범주 내에서 추가 서비스를 선택하고, 데이터베이스 범주를 선택한 다음, Azure Cache for Redis를 선택합니다.

  3. 이전 연습에서 만든 Azure Cache for Redis 인스턴스를 선택합니다.

  4. 리소스 창에서 콘솔을 선택하여 Redis 콘솔을 엽니다.

  5. 콘솔에서 XADD 명령을 사용하여 다음 새 항목을 추가합니다.

    스트림 Data
    org.logs.clientapp 1324092248593-0 device-id mobile error unknown-crash
    org.logs.clientapp 1481945061467-0 worker-process 1788 status success
    XADD org.logs.clientapp 1324092248593-0 device-id mobile error unknown-crash
    
    XADD org.logs.clientapp 1481945061467-0 worker-process 1788 status success
    
  6. XADD 명령의 두 호출에서 출력을 살펴봅니다. 출력에는 새로 추가된 항목의 키가 포함됩니다.

    "1324092248593-0"
    
    "1481945061467-0"
    
  7. XADD 명령을 사용하여 자동으로 생성된 식별자와 함께 또 다른 새 항목을 추가합니다.

    스트림 Data
    org.logs.clientapp application-status started
    XADD org.logs.clientapp * application-status started
    
  8. XADD 명령의 호출에서 출력을 살펴봅니다. 출력에는 현재 Unix 시간(밀리초)과 시퀀스 번호를 기반으로 새로 생성된 키가 포함됩니다. 예를 들어, 키가 1638502526759-0이면 출력은 다음과 같습니다.

    "1638502526759-0"
    

스트림의 모든 전체 검색 및 계산

XLEN 명령은 스트림의 항목 수를 계산합니다. 항목을 쿼리할 준비가 되면 XRANGE 명령을 사용하여 스트림 내에서 항목을 가져올 수 있습니다.

  1. XLEN 명령을 사용하여 org.logs.clientapp 스트림의 항목 수를 계산합니다.

    XLEN org.logs.clientapp
    
  2. XLEN 명령의 출력을 살펴봅니다. 출력은 이 연습의 앞부분에서 만든 항목에 대해 값이 3인 정수입니다.

    (integer) 3
    
  3. XRANGE 명령과 두 연산자 +-를 모두 사용하여 org.logs.clientapp 스트림의 모든 데이터 범위를 가져옵니다.

    XRANGE org.logs.clientapp - +
    
  4. XRANGE 명령 호출의 출력을 살펴봅니다. 이 출력에는 스트림의 세 항목이 모두 포함됩니다.

    1) 1) "1324092248593-0"
       2) 1) "device-id"
          2) "mobile"
          3) "error"
          4) "unknown-crash"
    2) 1) "1481945061467-0"
       2) 1) "worker-process"
          2) "1788"
          3) "status"
          4) "success"
    3) 1) "1638502526759-0"
       2) 1) "application-status"
          2) "started"
    

    참고

    마지막 키는 이 예제에 사용된 식별자와 정확히 일치하지 않습니다.

스트림에서 항목의 하위 집합 검색

XRANGE 명령에는 +- 연산자가 포함됩니다. 해당 연산자는 키와 함께 사용하여 시간 범위에 따라 스트림에서 데이터의 하위 집합을 쿼리할 수 있습니다.

  1. - 연산자와 두 번째 항목의 키(1481945061467-0)를 사용하여 XRANGE 명령을 호출합니다.

    XRANGE org.logs.clientapp - 1481945061467-0
    
  2. XRANGE 명령의 호출에서 출력을 살펴봅니다. 출력에는 스트림 시작부터 두 번째 항목까지 시간순으로 모든 항목이 포함됩니다.

    1) 1) "1324092248593-0"
       2) 1) "device-id"
          2) "mobile"
          3) "error"
          4) "unknown-crash"
    2) 1) "1481945061467-0"
       2) 1) "worker-process"
          2) "1788"
          3) "status"
          4) "success"
    
  3. 두 번째 항목의 키(1481945061467-0)와 + 연산자를 사용하여 XRANGE 명령을 호출합니다.

    XRANGE org.logs.clientapp 1481945061467-0 +
    
  4. XRANGE 명령의 호출에서 출력을 살펴봅니다. 출력에는 두 번째 항목이 포함된 후 스트림의 끝까지 모든 항목이 시간순으로 포함됩니다.

    1) 1) "1481945061467-0"
       2) 1) "worker-process"
          2) "1788"
          3) "status"
          4) "success"
    2) 1) "1638502526759-0"
       2) 1) "application-status"
          2) "started"
    

    참고

    마지막 키는 이 예제에 사용된 키와 정확히 일치하지 않습니다.