Linux下常用輕量級隊列服務比較

jopen 10年前發布 | 16K 次閱讀 Linux 消息系統

linux下的消息隊列服務有 Linux IPC、MemcacheQ、Redis,這三種服務各自有什么優缺點呢?看看下面的文章吧。

Linux IPC

IPC進程間通信(Inter-Process Communication)就是指多個進程之間相互通信,交換信息的方法。

系統消息隊列功能是這些方法中的其中一種。使用此隊列不需要額外安裝服務,是系統內置功能。

由于shell中也可以操作此隊列,故PHP與Shell需要通訊時使用此隊列會比較方便

注:PHP使用前需要開啟內置的 sysvmsg擴展模塊

MemcachQ

一個基于memcache的簡單隊列服務。

memcache協議兼容,所以PHP可以使用php_memcache擴展,像操作memcached那樣來操作memcacheq;

隊列長度限制較小,取決于啟動守護進程時申請的內存,可以保存較多的隊列

Redis

一個比較高級的開源key-value存儲系統,采用ANSI C實現。

其與memcached類似,但是支持持久化數據存儲,同時value支持多種類型:字符串 (同memcached中的value),列表 ,集合 (Set),有序集合 (OrderSet)和Hash 。所有的值類型均支持原子操作,如列表中追加彈出元素,集合中插入移除元素等。Rdids的數據大部分位于內存中,其讀寫效率非常高,其提供AOF(追加

式操作記錄文件)和DUMP(定期數據備份)兩種持久化方式。Redis支持自定義的VM(虛擬內存)機制,當數據容量超過內存時,可以將部分Value 存儲到文件中。同時Redis支持Master-Slave機制,可以進行數據復制。</p>

比較

 

</tr>

</tbody> </table>

后記

在本人經過實際的測試過程中感覺redis要比memcacheq更快:

使用相同的數據和代碼邏輯,分別向兩種隊列服務中寫入和讀取6000條的消息,

redis用時0.5秒左右,而memcacheq用時則在3秒左右。

但從兩者服務端的實現原因來看,性能差異不會如此大,可能和PHP擴展的實現有關。

參考

MemcacheQ官方網站:  http://memcachedb.org/memcacheq/

Linux環境進程間通信(三):  http://www.ibm.com/developerworks/cn/linux/l-ipc/part3/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!

優點缺點
Linux IPC

系統集成,不需要額外安裝服務

PHP和Shell中都可以使用

不支持數據持久化

隊列長度小,很容易達到上限

Memcacheq

數據保存在內存中,速度快

支持數據持久化

隊列長度限制小

與memcache兼容

與memcached是兩個獨立服務,如同時使用需要分別安裝
Redis

數據保存在內存中,速度快

支持數據持久化

隊列長度限制小

支持多種數據類型

同時可以做為緩存來使用


  • sesese色