Redis實現優先順序佇列

2021-09-11 09:18:42 字數 724 閱讀 2609

title: redis實現優先順序佇列 tags:

基於目前系統中存在部分非同步需求,比如匯入或者新開客戶車輛匹配vin碼等

redis中使用列表作為佇列 最關鍵提供了阻塞版本的指令blpop

新建三個佇列對應高中低優先順序 比如f6car_high f6car_mid f6_car_low 再新建deadletter列表  failletter列表

當有任務發出根據優先順序放入不同的佇列中 比如

此時消費者收到對應請求

為避免出現錯誤 比如處理該請求失敗 直接將對應的請求重新投遞到對應的failletter列表中(也可以區分優先順序)===》這部分可以手工處理或者二次處理直到不ok(策略可以自己定義)

定義序列化物件 包含如下屬性

屬性名稱

屬性型別

屬性描述

說明doctype

string

型別,處理對應的型別,比如vin

對應doctype的listener處理,如果失敗丟入failletter,如果沒有對應type丟入deadletter

mqbean

disturbable

對應物件,比如vinmqbean 封裝vin碼

業務物件(實現指定介面)

disturbatetime

long

時間投遞時間

from

string

**系統

定義listener來監聽處理

使用Redis實現優先順序佇列

優先順序佇列是一種如先進先出佇列和堆疊資料結構的抽象資料型別。所不同的是每乙個元素關聯乙個 優先順序 優先順序高的元素比優先順序低的元素優先得到處理。本文講解如何基於redis的sorted set資料型別實現優先順序佇列。sorted set中元素關聯乙個score,可以按score有序查詢元素。...

優先順序佇列的實現

優先順序佇列 佇列裡面的所有元素都有相應的權值,元素的刪除順序由這些權值決定。優先順序佇列的實現一般用堆來實現其效率比一般的實現要高。要弄清楚堆我們得先弄清楚下面的定義 一顆大根樹 小根樹 是這樣一棵樹,其中每個節點的值都大於 小於 或等於其子節點 如果有子節點的話 的值。大根堆 乙個大根堆 小根堆...

優先順序佇列(堆實現)

一 優先順序佇列定義 二 方法實現 獲得最大元素方法 去掉最大元素方法 修改優先順序方法 新增節點 三 實現 用堆實現乙個優先順序佇列 主要是新增 修改 刪除節點 節點具有唯一性 author hhf 2014年11月28日 public class priorityqueue 返回優先佇列中優先順...