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

Linux IPCphp

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

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

因爲shell中也能夠操做此隊列,故PHP與Shell須要通信時使用此隊列會比較方便shell

注:PHP使用前須要開啓內置的 sysvmsg擴展模塊緩存

MemcachQmemcached

一個基於memcache的簡單隊列服務。性能

memcache協議兼容,因此PHP可使用php_memcache擴展,像操做memcached那樣來操做memcacheq;測試

隊列長度限制較小,取決於啓動守護進程時申請的內存,能夠保存較多的隊列網站

Redisspa

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

其與memcached相似,可是支持持久化數據存儲,同時value支持多種類型:字符串 (同memcached中的value),列表 ,集合 (Set),有序集合 (OrderSet)和Hash 。全部的值類型均支持原子操做,如列表中追加彈出元素,集合中插入移除元素等。Rdids的數據大部分位於內存中,其讀寫效率很是高,其提供AOF(追加 式操做記錄文件)和DUMP(按期數據備份)兩種持久化方式。Redis支持自定義的VM(虛擬內存)機制,當數據容量超過內存時,能夠將部分Value 存儲到文件中。同時Redis支持Master-Slave機制,能夠進行數據複製。

比較



優勢 缺點
Linux IPC

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

PHP和Shell中均可以使用

不支持數據持久化

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

Memcacheq

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

支持數據持久化

隊列長度限制小

與memcache兼容

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

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

支持數據持久化

隊列長度限制小

支持多種數據類型

同時能夠作爲緩存來使用


後記

在本人通過實際的測試過程當中感受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/

相關文章
相關標籤/搜索