XREADGROUP

레디스 개발자 교육 신청 레디스 정기점검/기술지원
Redis Technical Support
레디스 엔터프라이즈 서버
Redis Enterprise Server

소비자그룹을 이용한 데이터 읽기

사용법은 XREADGROUP GROUP group consumer count 1 STREAMS key id-or->입니다.
마지막 인수인 ID는 일반적으로 특정 id를 지정하기 보다는 특별한 id인 '>'를 사용합니다. 그러면 명령이 실행될 때마다 다음 데이터를 읽어옵니다.

Example

명령>XREADGROUP GROUP CG-A C1 count 1 STREAMS sensor-1234 >
결과>1) 1) "sensor-1234"
    2) 1) 1) 1538319053569-0
            2) 1) "temperature"
                2) "98.7"
명령>XREADGROUP GROUP CG-A C1 count 1 STREAMS sensor-1234 >
결과>1) 1) "sensor-1234"
    2) 1) 1) 1538319053569-1
            2) 1) "temperature"
                2) "98.8"

XREADGROUP 명령으로 데이터를 읽고 처리한 후에는 반드시 XACK로 처리가 완료되었음을 통지해야 합니다.

BLOCK 옵션

BLOCK 옵션을 사용하면 데이터가 없을 경우, 지정한 시간(밀리초) 동안 데이터가 들어오기를 기다렸다 읽어옵니다.

  • XREADGROUP GROUP group consumer count 1 BLOCK 1000 STREAMS key >

XREAD에서 BLOCK 옵션을 사용할 경우 처음에만 '$'를 사용합니다만, 여기서는 계속 '>'를 사용합니다.

스트림 하나에 여러 소비자 할당하기

여러 소비자가 돌아가면서 스트림 하나의 데이터를 처리할 수 있습니다. 하나의 스트림에 처리해야 할 데이터가 많고, 처리 시간이 오래 걸린다면, 소비자(consumer)를 여러 개 지정할 수 있습니다.

  • XREADGROUP GROUP CG-A Consumer-1 count 1 STREAMS sensor-1234  >
    결과: temperature 100
  • XREADGROUP GROUP CG-A Consumer-2 count 1 STREAMS sensor-1234  >
    결과: temperature 101
  • XREADGROUP GROUP CG-A Consumer-3 count 1 STREAMS sensor-1234  >
    결과: temperature 102

스트림 여러 개 지정하기

스트림 여러 개에서 데이터를 읽어올 수 있습니다.

  • XREADGROUP GROUP CG-A Consumer-1 count 1 STREAMS sensor-1234 sensor-5678  > >

이 경우 count 1은 각 스트림에서 1개 씩 데이터를 읽어옵니다.


명령문

XREADGROUP GROUP group consumer
[COUNT count] [BLOCK milliseconds]
STREAMS key [key ...] ID [ID ...]

  • 이 명령은 version 5.0.0 부터 사용할 수 있다.
  • 논리적 처리 소요시간은 O(log(N)+M)이다. N은 스트림에 저장된 엔트리(ID) 개수이고, M은 리턴될 엔트리 개수이다.

<< XGROUP XREADGROUP XACK >>

Email 답글이 올라오면 이메일로 알려드리겠습니다.