brpoplpush
BRPOPLPUSH
데이터가 들어오면 리스트 오른쪽에서 데이터를 꺼내서 왼쪽에 넣는다.
사용법은 brpoplpush src_key dest_key timeout 이다.
결과는 rpop + lpush와 같음. 이 명령은 원자적으로 동작한다.
리스트에 데이터가 이미 있을 경우에는 RPOPLPUSH와 같다. 데이터가 없을 경우에는 timeout(초) 만큼 기다린다.
timeout이 0일때, 데이터가 입력될때까지 기다린다. 데이터가 들어오면 pop을 하고 data, 시간(초)를 표시한다.
Example: Reliable queue
Client A
명령> | lpush scr_key msg_1
|
결과> | 1
|
|
|
|
|
|
|
명령> | lpush scr_key msg_2
|
결과> | 1
|
|
|
|
|
Client B
|
|
|
|
명령> | brpoplpush src_key dest_key 0
|
결과> | msg_1 |
명령> | brpoplpush src_key dest_key 0
|
|
|
|
|
결과> | msg_2
(4.30s) |
애니메이션 보기
timeout 지정
사용법은 brpoplpush src_key dest_key timeout 이다.
Example: Reliable queue
Client A
명령> | lpush src_key msg_1
|
결과> | 1
|
|
|
|
|
|
|
|
|
|
|
|
|
Client B
|
|
|
|
명령> | brpoplpush src_key dest_key 5
|
결과> | msg_1 |
명령> | brpoplpush src_key dest_key 5
|
| 5초 후
|
결과> | (nil)
(5.03s)
|
애니메이션 보기
명령문
BRPOPLPUSH source destination timeout
- 이 명령은 version 2.2.0 부터 사용할 수 있다.
- 논리적 처리 소요시간은 O(1)입니다.