use async redis library to limit # of threads used for publish subscribe
- all requests are handled asynchronously now
- uses CachedThreadPool to efficiently handle load of publish subscribe messages
- uses FixedThreadPool to limit # of threads used for regular requests