2017-10-04 5 views
-1

Mon problème est d'enregistrer et de lire un fichier zip dans une base de données Redis Cache située sur Aure. J'ai essayé quelque chose avec StackExchange.Redis mais je ne l'ai pas réussi. Connaissez-vous un exemple ou une solution à ce sujet?Définir un fichier zip à redis cache

Mon code comme ça.Pour ce code, je reçois une erreur de temporisation.

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"); 

Et ceci est l'erreur:

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

Je ne sais pas exactement ce que vous voulez dire. Vous stockez du contenu binaire dans la valeur? Si oui, veuillez modifier votre question pour montrer le code que vous utilisez et le problème que vous rencontrez. En ce moment, votre question se lit comme "s'il vous plaît écrivez le code pour moi." –

+0

@DavidMakogon J'ai ajouté mon code. Vous pouvez le vérifier maintenant. –

Répondre

1

Tout d'abord, je ne suggère pas que vous téléchargez des fichiers volumineux à Redis cache.

La raison pour laquelle vous obtenez cette erreur est que vous téléchargez un fichier volumineux dans le cache redis. Il faut beaucoup de temps pour télécharger le fichier et répondre à la limite de connexion.

Redis est conçu pour le cache de petite taille pas de gros fichiers, si vous souhaitez télécharger un fichier volumineux, veuillez utiliser le stockage azure. Plus de détails, vous pouvez vous référer à ce article.

Si vous souhaitez toujours télécharger un fichier volumineux, vous pouvez modifier la valeur synctimeout dans la chaîne de connexion.

Modifier comme ceci:

ynctimeout=100000(this value is about when your request will time out),{redisname}.redis.cache.windows.net:6380,password={key},ssl=True,abortConnect=False 

La démo de test sur le côté.

Il faut près de 20 secondes pour télécharger le zip à redis.

enter image description here

+0

Lorsque j'augmente la valeur SyncTimeout dans la chaîne de connexion, cela a fonctionné pour moi. Merci. –