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>
比較:
優點 | 缺點 | |
Linux IPC |
系統集成,不需要額外安裝服務 PHP和Shell中都可以使用 |
不支持數據持久化 隊列長度小,很容易達到上限 |
Memcacheq |
數據保存在內存中,速度快 支持數據持久化 隊列長度限制小 與memcache兼容 |
與memcached是兩個獨立服務,如同時使用需要分別安裝 |
Redis |
數據保存在內存中,速度快 支持數據持久化 隊列長度限制小 支持多種數據類型 同時可以做為緩存來使用 |