Подключение к Redis через C # Redis клиент медленный! - PullRequest
1 голос
/ 21 июля 2011

Могу ли я узнать, что является эталоном для C # Redis?Я пытаюсь подключиться к Redis через Tcp / IP с 456 байтами данных.Тест ниже:

hset - 600 операций записи в секунду, цикл 10000 × 600 операций чтения / секунды, цикл 10000 операций

Это нормально?Я подозреваю, что скорость передачи tcp / ip медленная, потому что медленная скорость передачи 156 кбит / с.Я установил размер окна приема TCP, но скорость осталась прежней.Я также пытался использовать Ubuntu Redmark через tcp / ip.Скорость передачи данных может достигать 3 Мбит / с.hset -> 10k в секунду.

1 Ответ

2 голосов
/ 22 июля 2011

Скорее всего, проблема заключается в задержке - хотя 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 задержка намного ниже, чем при любом соединении между различными серверами.

...