一:隊列的概念、數據結構

隊列(Queue)是運算受到限制的一種線性表。只允許在表的一端進行插入,而在另一端進行刪除元素的線性表。隊尾(rear)是允許插入的一端。隊頭(front)是允許刪除的一端。空隊列是不含元素的空表。

假設有個隊列Q=(a1,a2,…,an),則a1為隊頭元素,an為隊尾元素。元素入隊的次序為a1,a2,…,an,而出隊的次序為a1,a2,…,an。可見隊列的操作是按照先進先出的原則進行的。

二隊列的應用

隊列可以很好地異步處理數據傳送和存儲,當你頻繁地向數據庫中插入數據、頻繁地向搜索引擎提交數據,就可採取隊列來異步插入。另外,還可以將較慢的處理邏輯、有併發數量限制的處理邏輯,通過消息隊列放在後台處理,例如FLV視頻轉換、發送手機短信、發送電子郵件等。

 

(php,memcache redis) 組建隊列

1.php隊列

在PHP中隊列以數組的形式表現。數組中的第一個元素作為隊頭,最後一個元素作為隊尾,這樣就可以操作這個隊列了。

$arr = array('a1','a2','a3','a4','a5');
array_push($arr,'a6');  //入棧操作, array_push:將一個或多個單元壓入數組的末尾(入棧)
var_dump($arr);
$first_str = array_shift($arr); //出棧操作
var_dump($arr);
array_push:將一個或多個單元壓入數組的末尾(入棧)
array_unshift:在數組開頭插入一個或多個單元
array_pop:將數組最後一個單元彈出(出棧)
array_shift:將數組開頭的單元移出數組

2.memcache 隊列