Делать по потоку на коннект - худшая идея.
Использовать редис для межпроцессорной коммуникации - хорошая идея.
Как разбить задачи по воркерам. Думаю, отличным вариантом будет равномерно всё размазать на все ядра, то есть, главный поток выступает неким роутером, который по очереди раздаёт (по очереди воркеры сами забирают) себе инфу пришедшую по сокету в главный процесс. При этом всё можно разбить по игрокам, а привязывать на каком из поток обрабатывается какой игрок по его id, например. Для всего этого можно использовать редис, но лучше не поленитесь и хотябы чуточку почитайте про zeromq, там и сокеты, и concurrency framework и message passing.