XCLAIM

Redis Developer Course Redis Technical Support Redis Enterprise Server

미처리된 데이터를 처리하기

XREADGROUP으로 데이터를 읽은 후 애플리케이션이 다운되면 그 데이터는 처리되지 않은 상태로 남아있습니다. XPENDING 명령으로 미처리(pending) 시간을 확인해서 다른 소비자에게 처리하도록 하는 명령이 XCLAIM입니다.
사용법은 XCLAIM key group consumer min-idle-time ID입니다.

Example

명령>XCLAIM sensor-1234 cg-A C3 5000 1539035297138-0
결과> 1) 1) 1539035297138-0
    2) 1) "temperature"
        2) "101"
  • 위 명령은 min-idle-time(pending time)이 5초 이상인 데이터를 처리합니다.
  • XCLAIM 명령은 idle time을 0으로 설정합니다. 그러므로 두 번째 요청한 클라이언트는 데이터를 읽어가지 못합니다.
  • 이 명령도 처리후에는 XACK로 처리가 완료되었음을 확인주어야 합니다.

기타 옵션들

여기서 설명하는 옵션들은 AOF 기록이나 클론(슬레이브)에게 전달할 목적으로 내부적으로 사용되는 것들입니다.

  • IDLE <ms>: Idle 시간을 설정합니다. 생략하면 0으로 설정됩니다.
  • TIME <ms-unix-time>: 의미는 idle 시간과 같지만 Unix 시작으로 설정합니다. AOF 기록시 사용합니다.
  • RETRYCOUNT <count>: 읽은(delivered) 횟수를 설정합니다.
  • FORCE: 강제로 팬딩된 데이터로 만듭니다. PEL(Pending Entry List)에 넣습니다.
  • JUSTID: ID만 리턴합니다.

명령문

XCLAIM key group consumer min-idle-time ID [ID ...]
[IDLE ms] [TIME ms-unix-time]
[RETRYCOUNT count] [FORCE] [JUSTID]

  • 이 명령은 version 5.0.0 부터 사용할 수 있다.
  • 논리적 처리 소요시간은 O(log(N))이다. N은 팬딩된 데이터 수이다.

<< XPENDING XCLAIM XAUTOCLAIM >>

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