设置一个zip文件到redis缓存

设置一个zip文件到redis缓存

问题描述:

我的问题是保存和读取压缩文件到位于Azure上的Redis缓存数据库。我尝试了一些StackExchange.Redis,但我没有管理它。你知道任何有关这方面的例子或解决方案吗?设置一个zip文件到redis缓存

My Code like that.For this code I get time-out error。

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 occurred HResult=0x80131505 Message=Timeout performing SET f1, inst: 0, mgr: Inactive, err: never, queue: 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) (Please take a look at this article for some common client-side issues that can cause timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts) Source=StackExchange.Redis

+0

不确定你的意思。你在存储二进制内容的价值?如果是这样,请编辑您的问题以显示您正在使用的代码以及您遇到的问题。现在,你的问题是“请为我写代码”。 –

+0

@DavidMakogon我加了我的代码。你现在可以检查它。 –

首先,我不建议你上传大文件到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

+0

当我在连接字符串中增加SyncTimeout值时,它对我很有用。谢谢。 –