隊列的概念和數據結構:數據庫
隊列(Queue)是運算受到限制的一種線性表。只容許在表的一端進行插入,而在另外一端進行刪除元素的線性表。隊尾(rear)是容許插入的一端。隊頭(front)是容許刪除的一端。空隊列是不含元素的空表。數組
假設有個隊列Q=(a1,a2,…,an),則a1爲隊頭元素,an爲隊尾元素。元素入隊的次序爲a1,a2,…,an,而出隊的次序爲a1,a2,…,an。可見隊列的操做是按照先進先出的原則進行的。服務器
PHP的隊列:網絡
在PHP中隊列以數組的形式表現。數組中的第一個元素做爲隊頭,最後一個元素做爲隊尾,這樣就能夠操做這個隊列了。數據結構
網上有不少封裝好的類,能夠直接使用。併發
array_push:將一個或多個單元壓入數組的末尾(入棧)異步
array_unshift:在數組開頭插入一個或多個單元網站
array_pop:將數組最後一個單元彈出(出棧)搜索引擎
array_shift:將數組開頭的單元移出數組spa
Ruby Starling:
Starling是一個支持MemCache協議的輕量級持久化服務器。Starling是讓建立網絡訪問隊列或者多個隊列異常簡單,也就是說多點和多臺機器間的異步工做進程。它是著名微博客網站Twitter開發用來處理大量的隊列消息,以及保持服務的響應。Starling已經在生產環境中使用,不只是Twitter在使用,FiveRuns一樣在使用。FiveRuns甚至還根據本身的應用作了改進。
Starling和Memcache使用的是一個協議只是端口不同。Starling使用的是22122端口,Memcache使用的是11211端口。
隊列能夠很好地異步處理數據傳送和存儲,當你頻繁地向數據庫中插入數據、頻繁地向搜索引擎提交數據,就可採起隊列來異步插入。另外,還能夠將較慢的處理邏輯、有併發數量限制的處理邏輯,經過消息隊列放在後臺處理,例如FLV視頻轉換、發送手機短信、發送電子郵件等。