无法将对象存储到membased中,我怎么知道为什么?

时间:2011-12-02 22:49:28

标签: c# winforms memcached couchbase enyim

我正在尝试将对象存储到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.Storefalse,并且它不会添加到服务器。

这句话下面几行我也有:

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。我在localhost

上使用Couchbase

2 个答案:

答案 0 :(得分:1)

我不确定,因为代码不熟悉。所以我问:你是否试图存储由95000条记录组成的字典? Membase非常类似于memcached,所以我建议检查你可以存储的对象大小是否有限制......据我所知,memcached是1mb

答案 1 :(得分:1)

您可以使用[ExecuteStore][1]方法,该方法返回IStoreOperationResult个对象而不是bool,您可以在其中找到消息,例外等。
它并不总是有帮助,但值得一试。

编辑:使用Couchbase .NET客户端库 1.1