3 回答

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
brpop
和 rpop
在功能上是有區(qū)別的。
你的代碼里已經(jīng)透漏了一些信息:brpop
的第一個(gè)參數(shù)是一個(gè) array
.
$res = Redis::brpop([key1], $time);
使用 redis-cli
的話,該命令是這樣的
> brpop key1 ... keyN timeout
brpop
功能:
從右到左掃描 key1 ... keyN
,對(duì)第一個(gè)非空 List
進(jìn)行 rpop
操作并返回該值。如果所有 List
都是空或不存在,阻塞 timeout
秒,timeout
為 0
表示一直阻塞。阻塞時(shí),如果有其他 client
對(duì) key1 ... keyN
中任意一個(gè) key
進(jìn)行 push
操作時(shí),阻塞接觸并返回。如果超時(shí),則返回 nil
。
其實(shí)就是相當(dāng)于對(duì)多個(gè)隊(duì)列(按照從尾隊(duì)列 keyN
到頭隊(duì)列 key1
)進(jìn)行 rpop
。

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊
你用rpop無阻塞,這個(gè)線程將一直進(jìn)行,你就會(huì)發(fā)現(xiàn),單線程也會(huì)打滿你的CPU
- 3 回答
- 0 關(guān)注
- 821 瀏覽
添加回答
舉報(bào)