日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
消費(fèi)Redis利用隊(duì)列實(shí)現(xiàn)不重復(fù)消費(fèi)(redis隊(duì)列不重復(fù))

思路:

Redis除了有專(zhuān)用的記錄存儲(chǔ)以外,還可以擔(dān)任消息隊(duì)列的角色,消費(fèi)者可以通過(guò)一些操作來(lái)實(shí)現(xiàn)不重復(fù)消費(fèi)。

對(duì)于普通的消息隊(duì)列,有兩種不重復(fù)消費(fèi)的方法,分別是發(fā)布 / 訂閱模式和拉取 / 確認(rèn)模式,但 Redis 不支持這兩種方式,它更適合必須在一個(gè)窗口中執(zhí)行的短暫任務(wù)。

那么,我們?nèi)绾问褂?Redis 實(shí)現(xiàn)不重復(fù)消費(fèi)呢?可以使用Redis LIST 功能,在LIST中存儲(chǔ)已消費(fèi)和待消費(fèi)的消息,以及根據(jù)情況在有限時(shí)間內(nèi)讓消息不被重復(fù)消費(fèi),比如如下代碼:

// 首先將未消費(fèi)的消息存儲(chǔ)到 Redis
// 將待消費(fèi)的消息存放到Redis List隊(duì)列中
List MSGList = new LinkedList();
// 設(shè)置消息有效期1小時(shí)
Long timeout = 3600L;
for(String msg:wtingMessage){
// 將消息放入隊(duì)列
msgList.add(msg);
// 并設(shè)置超時(shí)時(shí)間
redisTemplate.expire(msg,timeout,TimeUnit.SECONDS);
}
redisTemplate.opsForList().rightPushAll(KEY,msgList);

接下來(lái),我們可以使用Redis的BLPOP方法來(lái)實(shí)現(xiàn)不重復(fù)消費(fèi),將從隊(duì)列中獲取消息并在短時(shí)間內(nèi)執(zhí)行,如下代碼所示:

// 從隊(duì)列中獲取消息 
String msg = redisTemplate.opsForList().rightPop(KEY);
// 將消息可用隊(duì)列中刪除
redisTemplate.opsForList().remove(KEY,1,msg);
// 在限時(shí)之內(nèi),對(duì)消息進(jìn)行消費(fèi)
consumerMsg(msg);

另外,如果消息消費(fèi)者沒(méi)有能在規(guī)定的時(shí)間內(nèi)消費(fèi)完消息,則可以重新將消息放回隊(duì)列中,如下代碼所示:

// 消息消費(fèi)沒(méi)有在規(guī)定的時(shí)間內(nèi)消費(fèi)完,則可以重新將消息放回隊(duì)列中
msgList.add(msg);
// 重新設(shè)置消息的超時(shí)時(shí)間
redisTemplate.expire(msg,timeout, TimeUnit.SECONDS);
//將消息放回隊(duì)列
redisTemplate.opsForList().rightPushAll(Key, msgList);

以上就是通過(guò) Redis 隊(duì)列實(shí)現(xiàn)不重復(fù)消費(fèi)的思路。經(jīng)過(guò)以上操作,消息在有限時(shí)間內(nèi)只會(huì)被消費(fèi)一次,有效地完成了實(shí)現(xiàn)不重復(fù)消費(fèi)的需求。

成都創(chuàng)新互聯(lián)科技有限公司,經(jīng)過(guò)多年的不懈努力,公司現(xiàn)已經(jīng)成為一家專(zhuān)業(yè)從事IT產(chǎn)品開(kāi)發(fā)和營(yíng)銷(xiāo)公司。廣泛應(yīng)用于計(jì)算機(jī)網(wǎng)絡(luò)、設(shè)計(jì)、SEO優(yōu)化、關(guān)鍵詞排名等多種行業(yè)!


分享名稱(chēng):消費(fèi)Redis利用隊(duì)列實(shí)現(xiàn)不重復(fù)消費(fèi)(redis隊(duì)列不重復(fù))
網(wǎng)站路徑:http://m.5511xx.com/article/dpeidhs.html