我的问题是将zip文件保存并读取到位于onAzure上的Redis缓存数据库。我尝试使用StackExchange.Redis,但我没有管理它。你知道关于那个的任何例子或解决方案吗?
我的代码就像那样。对于这段代码,我收到了超时错误。
ConnectionMultiplexer connection = ConnectionMultiplexer.Connect("filecache.redis.cache.windows.net:6380,password=123,ssl=True,abortConnect=False");
IDatabase cache = connection.GetDatabase();
byte[] fileBytes = File.ReadAllBytes(@"c:\test.zip");
var str = Convert.ToBase64String(fileBytes);
cache.StringSet("f1", str);
var key1 = cache.StringGet("f1");
这是错误:
发生了StackExchange.Redis.RedisTimeoutException 的HResult = 0x80131505 消息=超时执行SET f1,inst:0,mgr:无效,错误:从不,队列:2,qu:1,qs:1,qc:0,wr:1,wq:1,in:0,ar:0 ,clientName:NLBRLT-MCOPUR,serverEndpoint:Unspecified / BatchReportCache.redis.cache.windows.net:6380,keyHashSlot:2046,IOCP:(Busy = 0,Free = 1000,Min = 4,Max = 1000),WORKER :( Busy = 0,Free = 2047,Min = 4,Max = 2047)(请查看本文,了解可能导致超时的一些常见客户端问题:http://stackexchange.github.io/StackExchange.Redis/Timeouts) 源= StackExchange.Redis
答案 0 :(得分:1)
首先,我建议您不要将大文件上传到redis缓存。
您收到此错误的原因是您将大文件上传到redis缓存。上传文件并满足连接限制需要花费大量时间。
Redis设计用于小尺寸缓存而不是大文件,如果要上传大文件,请使用azure存储。更多细节,您可以参考此article。
如果您仍想将大文件上传到该文件,则可以更改连接字符串中的 synctimeout 值。
将其更改为:
ynctimeout=100000(this value is about when your request will time out),{redisname}.redis.cache.windows.net:6380,password={key},ssl=True,abortConnect=False
侧面的测试演示。
将zip上传到redis需要将近20秒。