You want to do quick messaging between hosts, processes, or even threads. You want to use a different transport besides TCP: multicast, in-process, inter-process. The code doesn't change (besides the bind/connect calls). You want to take advantage of other ZeroMQ messaging patterns to (request/reply, push/pull, etc). You don't want certain components to talk to the central Redis servers. You don't want to deal with connection errors. ZeroMQ publishers and subscribers can start up in any order. They'll connect and reconnect behind the scenes. ZeroMQ PUB sockets will buffer messages if a SUB socket drops and reconnects. Read more about reliable pub sub .
Full article: http://techno-weenie.net/2011/6/17/zeromq-pub-sub/