Не могу сохранить объект в ячейке, как я могу узнать почему? - PullRequest
1 голос
/ 03 декабря 2011

Я пытаюсь сохранить объект в Cache, например:

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

И я всегда получаю client.Store, чтобы быть false, и это не добавляет к серверу.

несколько строк под этим утверждением у меня также есть:

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

и всегда добавляет в память ...

Есть ли способ узнать причину, по которой я не могу сохранить объект?

Dictionary имеет около 95.000 записей и в конфигурации у меня есть

<socketPool minPoolSize="10" 
            maxPoolSize="100" 
            connectionTimeout="00:01:00" 
            deadTimeout="00:02:00" />

P.S. Я использую Couchbase на localhost

Ответы [ 2 ]

1 голос
/ 10 мая 2012

Вы можете использовать метод [ExecuteStore][1], который возвращает объект IStoreOperationResult вместо bool, где вы можете найти сообщение, исключения и т. Д.
Это не всегда помогает, но стоитпопытка

РЕДАКТИРОВАТЬ: используйте клиентскую библиотеку Couchbase .NET 1.1 для этого.

1 голос
/ 07 декабря 2011

Я не уверен, потому что код не знаком ... поэтому я спрашиваю: вы пытаетесь сохранить словарь, который состоит из 95000 записей?Membase очень похожа на memcached, поэтому я предлагаю проверить, есть ли ограничение на размер объекта, который вы можете хранить ... как я знаю, для memcached это 1mb

...