设置一个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
首先,我不建议你上传大文件到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秒的时间。
当我在连接字符串中增加SyncTimeout值时,它对我很有用。谢谢。 –
不确定你的意思。你在存储二进制内容的价值?如果是这样,请编辑您的问题以显示您正在使用的代码以及您遇到的问题。现在,你的问题是“请为我写代码”。 –
@DavidMakogon我加了我的代码。你现在可以检查它。 –