이전에 기본적인 push(lpush, rpush)와 pop(lpop, rpop), 약간의 조회 커맨드(lindex, lrange), 리스트 조작 커맨드를 한가지(ltrim) 알아봤습니다. 이번엔 list에 수행할 수 있는, 조금 더 많은 커맨드들에 대해 알아보겠습니다.
BLPOP [key ...] [timeout], BRPOP [key ...] [timeout]
각각 lpop과 rpop의 blocking 버전으로서, blocking pop이라고도 부릅니다. 인자로 전달된 키들을 순서대로 확인하면서, 비어있지 않은 리스트를 먼저 찾은 후 해당 리스트의 가장 첫(blpop), 또는 가장 마지막(brpop) 요소를 pop합니다. list에서 pop할 최소 한 개의 엘리먼트를 발견하거나, timeout을 초과할 때까지 redis 클라이언트가 block됩니다.
위의 예에서, 마지막 blpop 명령은 최대 10초동안(설정된 timeout) blocking되어 있습니다.
- 그 사이에 key a에 묶여 있는 list에 값이 push된다면, 해당 엘리먼트를 pop하고 명령이 종료됩니다.
- push되지 않는다면, timeout만큼 기다리다 nil을 반환하고 명령이 종료됩니다.
이러한 blocking pop 명령은 messaging queue나 task queue를 만드는 데에 유용하게 사용할 수 있습니다.
RPOPLPUSH [source_key] [dest_key]
source_key의 리스트에서 가장 마지막 요소를 rpop함과 동시에, 반환 값을 dest_key의 리스트에 lpush합니다. pop할 요소가 없는 경우 (nil)
을 반환합니다.
BRPOPLPUSH [source_key] [dest_key] [timeout]
rpoplpush의 blocking 버전입니다.
'데이터베이스 > Redis' 카테고리의 다른 글
[Redis] Pipelining (0) | 2018.09.06 |
---|---|
[Redis] String(기본 조작) (0) | 2018.09.06 |
[Redis] List (0) | 2018.09.06 |
[Redis] select (0) | 2018.09.06 |
[Redis] Set (0) | 2018.09.06 |