xreadgroup
XREADGROUP
Redis Developer Course | 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
답글이 올라오면 이메일로 알려드리겠습니다.