欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Redis隊列和阻塞隊列的實現(xiàn)

 更新時間:2023年11月10日 11:22:06   作者:xdscode  
本文主要介紹了Redis隊列和阻塞隊列的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

redis 隊列的優(yōu)點(diǎn)是輕量級,業(yè)務(wù)足夠簡單時不需要使用rabbitMq這樣專業(yè)的消息中間件;缺點(diǎn)是彈出隊列中的元素時,即使該消息處理失敗也無法再次進(jìn)行消費(fèi)

Redis隊列 List

Redis隊列和阻塞隊列_redis

簡單演示如下

Redis隊列和阻塞隊列_阻塞隊列_02

普通的redis隊列,為了實現(xiàn)業(yè)務(wù),通常會使用while進(jìn)行循環(huán),這樣的話沒有消息時依舊會頻繁的執(zhí)行循環(huán),造成cpu的空轉(zhuǎn),所以一般會在代碼中增加sleep來解決該問題,但因此又會造成消息延遲問題。

Redis隊列和阻塞隊列_redis_03

阻塞隊列可以很好的解決這些問題。

Redis阻塞隊列

redis隊列提供了 “阻塞式” 拉取消息的命令:BRPOP / BLPOP,這里的 B 指的是阻塞(Block)。如果隊列為空,消費(fèi)者在拉取消息時就「阻塞等待」,一旦有新消息過來,就通知消費(fèi)者立即處理新消息。

Redis隊列和阻塞隊列_redis_04

阻塞隊列實現(xiàn):

Redis隊列和阻塞隊列_redis_05

使用 BRPOP 這種阻塞式方式拉取消息時,還支持傳入一個「超時時間」,如果設(shè)置為 0,則表示不設(shè)置超時,直到有新消息才返回,否則會在指定的超時時間后返回 NULL

下面是某業(yè)務(wù)完整的消費(fèi)者代碼

Redis隊列和阻塞隊列_阻塞隊列_06

注意:

  1. 阻塞時間結(jié)束后代碼會繼續(xù)向下執(zhí)行
  2. 如果設(shè)置的超時時間太長,這個連接太久沒有活躍過,可能會被 Redis Server 判定為無效連接,之后 Redis Server 會強(qiáng)制把這個客戶端踢下線。所以,客戶端要有處理機(jī)制。實際項目中redis連接超時時間遠(yuǎn)大于20s,因此正常情況不會出現(xiàn)redis超時問題。以防萬一增加redis異常捕獲,出現(xiàn)異常時殺掉當(dāng)前進(jìn)程,同時supervisord會自動重新拉起該進(jìn)程

 到此這篇關(guān)于Redis隊列和阻塞隊列的實現(xiàn)的文章就介紹到這了,更多相關(guān)Redis隊列和阻塞隊列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redis緩存IO模型的演進(jìn)教程示例精講

    Redis緩存IO模型的演進(jìn)教程示例精講

    這篇文章主要為大家介紹了Redis線程IO模型演進(jìn)的教程示例精講,有需要朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-11-11
  • Redis做預(yù)定庫存緩存功能設(shè)計使用

    Redis做預(yù)定庫存緩存功能設(shè)計使用

    這篇文章主要為大家介紹了Redis做預(yù)定庫存緩存功能設(shè)計使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • 詳解Redis緩存預(yù)熱的實現(xiàn)方法

    詳解Redis緩存預(yù)熱的實現(xiàn)方法

    緩存預(yù)熱是一種在程序啟動或緩存失效之后,主動將熱點(diǎn)數(shù)據(jù)加載到緩存中的策略,本文將給大家分享一下如何實現(xiàn)Redis的緩存預(yù)熱,文中有詳細(xì)的實現(xiàn)代碼,需要的朋友可以參考下
    2023-10-10
  • redis哈希和集合_動力節(jié)點(diǎn)Java學(xué)院整理

    redis哈希和集合_動力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了redis哈希和集合的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Redis中的連接命令與鍵命令操作詳解

    Redis中的連接命令與鍵命令操作詳解

    Redis連接命令主要是用于客戶端與服務(wù)器建立連接的,Redis是一種流行的內(nèi)存數(shù)據(jù)庫,支持多種數(shù)據(jù)結(jié)構(gòu),其中鍵命令是核心操作之一,在Redis中,鍵(Key)是用來存儲數(shù)據(jù)的主要元素,每個鍵都有一個唯一的名稱,本文給大家介紹了Redis中的連接命令與鍵命令操作
    2024-09-09
  • 使用lua+redis解決發(fā)多張券的并發(fā)問題

    使用lua+redis解決發(fā)多張券的并發(fā)問題

    這篇文章主要介紹了使用lua+redis解決發(fā)多張券的并發(fā)問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Redis sentinel節(jié)點(diǎn)如何修改密碼

    Redis sentinel節(jié)點(diǎn)如何修改密碼

    這篇文章主要介紹了Redis sentinel節(jié)點(diǎn)如何修改密碼問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Redis實戰(zhàn)之Jedis使用技巧詳解

    Redis實戰(zhàn)之Jedis使用技巧詳解

    Jedis?是老牌的?Redis?的?Java?客戶端,提供了比較全面的?Redis?命令的操作支持,也是目前使用最廣泛的客戶端。這篇文章主要為大家詳細(xì)介紹了Jedis的使用技巧,需要的可以參考一下
    2022-12-12
  • redis cluster集群模式下實現(xiàn)批量可重入鎖

    redis cluster集群模式下實現(xiàn)批量可重入鎖

    本文主要介紹了使用redis cluster集群版所遇到的問題解決方案及redis可重入鎖是否會有死鎖的問題等,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • 使用SpringBoot?+?Redis?實現(xiàn)接口限流的方式

    使用SpringBoot?+?Redis?實現(xiàn)接口限流的方式

    這篇文章主要介紹了SpringBoot?+?Redis?實現(xiàn)接口限流,Redis?除了做緩存,還能干很多很多事情:分布式鎖、限流、處理請求接口冪等,文中給大家提到了限流注解的創(chuàng)建方式,需要的朋友可以參考下
    2022-05-05

最新評論