redis push/pop VS pub/sub
(1)push/pop每條消息只會有一個消費者消費,而pub/sub可以有多個
對於任務隊列來說,push/pop足夠,但真的在做分布式消息分發的時候,還是pub/sub吧。
(2)從編程角度看,pub/sub中sub通道需要保持長連接,而push/pop, pop需要Consumer進程定時去刷新。
前者可以滿足實時要求,但是對編程架構有要求,而后者在實時性上有缺陷,但是對編程架構要求較低。
redis VS kafka
(1)redis是內存數據庫,只是它的list數據類型剛好可以用作消息隊列而已
kafka是消息隊列,消息的存儲模型只是其中的一個環節,還提供了消息ACK和隊列容量、消費速率等消息相關的功能,更加完善
(2)redis 發布訂閱除了表示不同的 topic 外,並不支持分組
kafka每個consumer屬於一個特定的consumer group(default group), 同一topic的一條消息只能被同一個
consumer group內的一個consumer消費,但多個consumer group可同時消費這一消息。
(3) 處理數據大小的級別不同
參考: