1

次のようにオブジェクトをキャッシュに保存しようとしています:

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

そして、これは常にメモリに追加されます...

オブジェクトを保存できない理由を取得する方法はありますか?

Dictionary95.000のレコードがあり、私が持っている構成では

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

PS私はCouchbaseを使用していますlocalhost

4

2 に答える 2

1

メッセージや例外などを見つけることができるの代わりにオブジェクト[ExecuteStore][1]を返すメソッドを使用できます。 常に役立つとは限りませんが、試してみる価値はあります。IStoreOperationResultbool

EDIT:そのためにCouchbase .NET Client Library 1.1を使用してください。

于 2012-05-10T07:19:13.627 に答える
1

コードがよくわからないのでわかりません..だから私は尋ねます:95000レコードで作られた辞書を保存しようとしていますか? Membase は memcached と非常によく似ているため、保存できるオブジェクトのサイズに制限があるかどうかを確認することをお勧めします..

于 2011-12-07T00:29:52.317 に答える