1

我可以知道 C# redis 的基准是什么吗?我尝试使用 456 字节数据通过 Tcp/ip 连接到 redis。基准如下:

hset - 600 次写入/秒,循环 10000 次 600 次读取/秒,循环 10000 次

这正常吗?我怀疑 tcp/ip 传输速率很慢,因为传输速率慢 156 kbps。我已经设置了 TCP 接收窗口大小,但速度仍然相同。我还尝试通过 tcp/ip 使用 ubuntu benchmark redis。传输速率最高可达 3 mbps。hset - > 10k 每秒。

4

1 回答 1

2

问题很可能是延迟——虽然 redis 每秒可以处理数千个操作,但单个同步连接将花费大部分时间等待网络。你的测试循环实际上是这样的:

Client                Network       Server 
send GET     
                      1ms         
                                    Process GET (0.01 ms)
                      1ms
Result received 

因此该操作总共需要 2.01 毫秒,但客户端和服务器几乎都处于空闲状态。这意味着您可以充分利用并行性 - 将循环拆分为 100 个线程,这样就无需在网络上等待,您可以在相同的 2 毫秒内获得 100 个结果。

ubuntu 的差异可能是由于您在与 redis 相同的服务器上运行它 - 即使您使用的是 IP 而不是 unix 套接字,localhost 的延迟也比不同服务器之间的任何连接要低得多。

于 2011-07-22T01:38:36.400 回答