[Redis] BLPOP

Blocking 된 상태에서 list를 pop 하는 것을 말한다. LPOP의 blocking 버전이라고 할 수 있다.
BLPOP가 호출이 되면, list의 헤더에 있는 key 값이 호출된다.

redis> BLPOP list1 list2 list3 0

list1, list2, list3에 존재하는 키 값중 가장 먼저 쓰여진 list1에 저장된 키 값 하나를 pop 한다.
list1에 값이 없다면 list2의 값을 pop 한다.
만약 list1, list2, list3 모두 값이 없다면 redis는 다른 client에서 해당 list에 값을 입력하기 전까지는 block 된다.
(맨 마지막 0은 timeout 파라미터로써 0일 경우엔 INFINITE, 그 외엔 초단위의 타임 아웃 값을 가짐)

redis> RPUSH list1 a b c d e
(integer) 5
redis> RPUSH list2 1 2 3 4 5
(integer) 5
redis> BLPOP list1 list2 0
1)"list1"
2)a
redis> BLPOP list2 0
1)"list2"
2)1

C#)

DataEncoding ____dataEncode = new DataEncoding();
try
{
byte[][] jsonByte = null; jsonByte=____receiveRedis.BLPop("KEYNAME",10);
for(ii=1; ii<jsonByte.Length; ii++)
{
byte[] jsonEachByte = new byte[jsonByte[ii].Length];
Console.WriteLine(____dataEncode.EncodingByteToStr(jsonEachByte));
}
}

+ Recent posts