Linux IPC:php
IPC進程間通訊(Inter-Process Communication)就是指多個進程之間相互通訊,交換信息的方法。linux
系統消息隊列功能是這些方法中的其中一種。使用此隊列不須要額外安裝服務,是系統內置功能。redis
因爲shell中也能夠操做此隊列,故PHP與Shell須要通信時使用此隊列會比較方便shell
注:PHP使用前須要開啓內置的 sysvmsg擴展模塊緩存
MemcachQ:memcached
一個基於memcache的簡單隊列服務。性能
與memcache協議兼容,因此PHP可使用php_memcache擴展,像操做memcached那樣來操做memcacheq;測試
隊列長度限制較小,取決於啓動守護進程時申請的內存,能夠保存較多的隊列網站
Redis:spa
一個比較高級的開源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/