第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

redis使用list做消息隊(duì)列,為什么推送用lpush,而消費(fèi)用的是brpop?

redis使用list做消息隊(duì)列,為什么推送用lpush,而消費(fèi)用的是brpop?

PHP
繁華開滿天機(jī) 2019-03-18 06:39:25
最近嘗試使用redis做消息隊(duì)列, 奇怪的是redis使用list做消息隊(duì)列的話,為什么推送用lpush,而消費(fèi)用的是brpop? 寫代碼的時(shí)候消費(fèi)者大致如下:while(true){$res = Redis::brpop([key1], $time);//業(yè)務(wù)代碼} 我這不是在阻塞檢查list中有沒有數(shù)據(jù)么,有數(shù)據(jù)就進(jìn)行處理, 這里已經(jīng)阻塞了, 所以我認(rèn)為brpop換成rpop貌似也沒問題啊, 想知道為什么還要有brpop這么個(gè)函數(shù)?
查看完整描述

3 回答

?
瀟瀟雨雨

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊

brpoprpop 在功能上是有區(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 秒,timeout0 表示一直阻塞。阻塞時(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。

查看完整回答
反對(duì) 回復(fù) 2019-03-18
?
搖曳的薔薇

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊

你用rpop無阻塞,這個(gè)線程將一直進(jìn)行,你就會(huì)發(fā)現(xiàn),單線程也會(huì)打滿你的CPU

查看完整回答
反對(duì) 回復(fù) 2019-03-18
  • 3 回答
  • 0 關(guān)注
  • 821 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)