Impossible de stocker l'objet dans membased, comment puis-je savoir pourquoi?
Question
Je suis en train de stocker un objet dans le cache comme:
Dictionary<Guid, Decimal> cacheSubscribers =
client.Get<Dictionary<Guid, Decimal>>("ListAllSubscribers");
if (cacheSubscribers == null)
{
cacheSubscribers = db.JK_Subscribers
.Where(x => x.sync)
.Select(x => new { x.guid, x.subscriber_id })
.ToDictionary(x => x.guid, x => x.subscriber_id);
if (!client.Store(StoreMode.Set, "ListAllSubscribers", cacheSubscribers, ts))
MessageBox.Show("Could not store ListAllSubscribers");
}
Et je reçois toujours client.Store
d'être false
, et il ne correspond pas au serveur.
quelques lignes ci-dessous cette déclaration, j'ai aussi:
IEnumerable<JK_ChallengeAnswers> challengeAnswers = client.Get<IEnumerable<JK_ChallengeAnswers>>("ListAllChallengeAnswers");
if (challengeAnswers == null)
{
challengeAnswers = db.JK_ChallengeAnswers.Include("JK_Challenges").ToList();
client.Store(StoreMode.Set, "ListAllChallengeAnswers", challengeAnswers, ts);
}
et cette toujours ajouter dans la mémoire ...
Y at-il un moyen d'obtenir la raison pour laquelle je ne peux pas stocker l'objet?
Dictionary
a autour de 95.000 records et dans la configuration que j'ai
<socketPool minPoolSize="10"
maxPoolSize="100"
connectionTimeout="00:01:00"
deadTimeout="00:02:00" />
P.S. J'utilise Couchbase sur localhost
La solution
Je ne suis pas sûr parce que le code est familiar..so je demande: Vous essayez de stocker le dictionnaire qui est faite de 95000 dossiers? Membase est très similaire à memcached, donc je suggère de vérifier s'il y a une limite à la taille de l'objet, vous pouvez store..as Je sais memcached 1Mo
Autres conseils
Vous pouvez utiliser la méthode [ExecuteStore][1]
, qui retourne un objet au lieu d'un IStoreOperationResult
bool
, où vous pouvez trouver un message, exceptions, etc. ..
Il ne permet pas toujours, mais il vaut la peine d'essayer.
EDIT:. Utilisez Couchbase Library .NET client 1.1 pour que