c# - 通过 C# redis 客户端连接到 redis 很慢!

标签 c# redis tcp

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

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

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

最佳答案

问题很可能是延迟 - 虽然 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 的延迟也比不同服务器之间的任何连接低得多。

关于c# - 通过 C# redis 客户端连接到 redis 很慢!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6774546/

相关文章:

javascript - 在模态中加载模型仅有效一次

c - hiredis 报错 1 REDIS_ERR_IO 没有那个文件或目录

java - 如何捕获 redis.serializer.SerializationException

java - Java服务器-TCP套接字在不关闭套接字连接的情况下检测EOF

c# - <%= %> 标记无法在 ASP 标签控件中显示内容

c# - 如何对 POST 方法进行单元测试

c# - 设置事件窗口

redis - 直接从 Redis 集群中的副本读取

c - 防止 getpeername() 返回 127.0.0.1

perl socket编程连续写入socket后的问题