In the last post we saw how Redis can easily be modified to persist the last published message on PubSub channels. Without subscribing to the PubSub channel we were able to get the last published message from Redis db. In this post, I will take that idea one step ahead and add native capabilities within Redis to persist all the unprocessed messages published on PubSub channel in channel specific lists. We’ll also preserve our capability to send the last published message to clients upon subscription.
Redis comes packed with a simple yet powerful PubSub API. It provides low latency and scales well. A message published on a channel is received by subscriber(s) at the other end. However, if no active subscriber is found the message is simply lost. This drawback puts Redis out of the probables list for several use cases where message persistence of unprocessed published messages is desired. It’s also probably a reason why several open source projects that support Redis as a broker are based upon it’s list push / pop API. In this post I will demonstrate how to modify Redis PubSub API to support message persistence, opening possibilities for several interesting use cases.