Hi,
IMO, there is no better approach in general. It is a tradeoff
between latency and scalability.
One connection per thread (or a pool of connections) will usually
provide the best latencies, but past a given number of connections,
it will not scale. I think this limit is much higher than 1200
connections though. Redis is able to support thousands of
connections thanks to epoll/kqueue usage.
Using a thread to multiplex Redis I/Os will be a bit slower (more
context switches, more synchronization required, more kernel
scheduler activity), but it will scale more if you have enough
processes. Also it offers some possibilities for deduplication
(if two processes get the same key at the same time, the
multiplexer thread can optimize away one of the operations).
IMO the choice depends on how active you client threads will
be regarding Redis accesses. If the Redis activity is moderate
then the multiplexer implementation looks fine. It the activity
is high, a 1->100 ratio sounds a bit high, and a connection
per thread model will be better.
Regards,
Didier.