ServiceStack.Redis从Redis服务器读取大文件

时间:2013-10-27 15:34:38

标签: windows redis servicestack windows-server-2003 socketexception

我正在测试ServiceStack Redis客户端,我收到了与Windows Server 2003 R2中的包大小相关的错误。

对于小于30MB的文件工作正常,但对于大于32-33MB的文件,它开始发送错误。它只发生在Windows Server 2003 R2中,我在Windows 7和Windows 2008 R2中成功测试过。

代码:

String text = File.ReadAllText("file.xml");
String key = Guid.NewGuid().ToString();            
if (redisClient.Add(key, text, DateTime.Now.AddSeconds(300)))
    String Result = redisClient.Get<object>(key) as String;

错误:

System.Net.Sockets.SocketException (0x80004005): An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)

是否有人知道这是因为操作系统限制还是Redis的ServiceStack客户端出现问题。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我也遇到过这个问题。虽然我确实看到了与改变TCP窗口大小等内容相关的在线解决方案,但我只是简单地解压缩了所有内容。这在所有情况下都不起作用(特别是如果内容已经被压缩了!),但如果压缩是一个选项,我会尝试。