将zip文件设置为redis缓存

时间:2017-10-04 13:46:04

标签: c# azure redis stackexchange.redis

我的问题是将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

1 个答案:

答案 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秒。

enter image description here