在工作中,時常會有用到佇列的場景,比較常見的用rabbitmq這些專業的元件,官網位址是:重要的是官方有.net的客戶端,但是如果對rabbitmq不熟悉的話,建議使用第三方封裝好的 easynetq,rabbitmq比oqiwxfz較適合對安全性,穩定性要求較高的地方,但有時我們也會有對這方面要求不是很高的場景,比如:文章閱讀數,實時性要求不是很高的地方,所以我想到了用redis來做佇列。
redis 的list結構本身就是乙個鍊錶 (雙向鍊錶),所以符合我們的佇列先進先出的要求。
我用的是stackexchange.redis 這個元件來操作redis,以前一直用 service.stack.redis,後來該類庫公升級後對個人使用有次數限制,需要付費使用才能沒有呼叫限制.
操作redis簡單封裝如下:
public static class redishelper
); public static connectionmultiplexer instance}}
有了這個操作類後,我們就可以操作redis了,簡單的對 list 的操作如下:
///
/// 簡單 redis 佇列
///
public class ******redisqueue
public string rightpop(string key)
}測試**如下:
首先需要乙個生產資料的程式
static void main(string args)
});
system.threading.task程式設計客棧s.task.factory.startnew(() =>
});system.threading.tasks.task.factory.startnew(() =>
});system.threading.tasks.task.factory.startnew(() =>
});oqiwxfz system.threading.tasks.task.factory.startnew(() =>
});console.readkey();
}然後有消費佇列的程式:
static void main(string args)
}測試結果截圖
對可靠性和穩定性要求不高的應用場景,可以使用redis簡單方便的實現。
本文標題: redis實現簡單佇列
本文位址:
redis佇列 生產消費模式 簡單實現
生產消費,不外乎就是生產新的訊息插入到佇列尾巴,消費者從佇列頭部取訊息。基於此,簡單實現如下 還有一種稍微複雜的實現,是結合了spring的實現,複雜實現 往列表尾部插入資料 param key param value public static void rpush string key,stri...
redis佇列實現
redis佇列,使用了list列表資料結構,lpush生成,rpop消費模式。yiic queue worker qname 是佇列的名稱,例如 current,position等等,這只是消費者,即佇列處理程式。這是乙個典行的yii的命令列程式,檔案在 path to protected comm...
redis實現訊息佇列
用redis實現乙個訊息通知系統,總結了一下技術細節,其中演示 如果沒有特殊說明,使用的都是phpredis擴充套件來實現的。記憶體 比如要推送一條全域性訊息,如果真的給所有使用者都推送一遍的話,那麼會占用很大的記憶體,實際上不管粘性有多高的產品,活躍使用者同全部使用者比起來,都會小很多,所以如果只...