<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          《redis in action》Redis做隊列

          共 1005字,需瀏覽 3分鐘

           ·

          2021-05-02 15:58

          使用redis做任何事情都是基于redis提供的數據結構,那么消息隊列有哪幾種類型?之前rabbitmq咋說有簡單的隊列、優(yōu)先級隊列、延遲隊列等等。但是那時候咋也沒說棧這東西。那么redis如何做這些事,根據之前的學習??隙ㄊ褂胠ist了。
          Redis隊列(先進先出)
          隊列中我們說redis提供了很多操作隊列的方法??梢詮淖筮吿砑印⒂疫吿砑?、左邊獲取、右邊獲取等等等。所以說有了這些方法,用redis做個簡單的隊列簡直是太容易了。比如我們要做一個先進先出的隊列。那么我們就使用命令RPUSH進行添加,而獲取的時候我們就采用命令LPOP,但是list中可能沒有數據,這時候使用LPOP就會返回nil,所以我們可以采用BLPOP命令進行阻塞式的數據獲取。
          Redis棧(先進后出)
          通過上邊的說法,咋操作List的時候直接單向操作,那么就是一個棧啊。LPUSH,BLOPO命令即可搞定。
          Redis優(yōu)先級隊列(按優(yōu)先級高低進行排序)
          我們的任務發(fā)送到redis中,然后任務要具有一定的順序,這個順序是優(yōu)先級??紤]到之前l(fā)ist中有l(wèi)push,rpush等命令,所以對于簡單的優(yōu)先級隊列,我們直接采用這兩個命令即可。當然現實的問題是我們的優(yōu)先級消息可能不是確定的,所以兼容性問題很重要。故此我們可以根據建立多個優(yōu)先級list,然后我們在獲取消息的時候用多個優(yōu)先級list去獲取。比如brpop list1 list2,其中l(wèi)ist1是優(yōu)先級高的隊列。List2是優(yōu)先級低的隊列。但是這種方式實現優(yōu)先級隊列的問題是擴展性不強。那么最后就是采用ZSET來做了,但是ZSET的容量是8192,所以容量是個大問題,除此之外,zset需要去反查一下真實的消息,所以效率比較低。但是如果做異步處理的話,也還行。
          Riedis做延遲隊列(指定時間執(zhí)行)
          Redis做延遲隊列其實還是用zset去做,我們用當前的時間+需要延遲的時間作為zset的score,然后我們按照score的增序來獲取對應的元素,通過判斷時間是否小于當前時間然后執(zhí)行相關的動作,處理完畢之后將其從ZSET和list中移除即可。
          瀏覽 31
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  无码一区=区 | 亚洲成人免费黄色视频 | 日本色逼视频 | 日本三级片网站久射 | 成人 小早川 3D |