Скорее всего, проблема заключается в задержке - хотя redis может обрабатывать многие тысячи операций в секунду, одно синхронное соединение будет тратить большую часть своего времени на ожидание сети.Ваш тестовый цикл на самом деле выглядит примерно так:
Client Network Server
send GET
1ms
Process GET (0.01 ms)
1ms
Result received
Таким образом, операция занимает в общей сложности 2,01 мс, но и клиент, и сервер простаивали почти все это.Это означает, что вы можете эффективно использовать параллелизм - разделите ваш цикл на 100 потоков, чтобы не было ожидания в сети, и вы можете получить 100 результатов за те же 2 мс.
Разница в Ubuntu, вероятно, связана стот факт, что вы запускаете его на том же сервере, что и redis - даже если вы используете IP, а не сокеты unix, у localhost задержка намного ниже, чем при любом соединении между различными серверами.