Enyim.Caching を含む .NET Couchbase Client API を使用しています。約 55 MB の DataTable があり、キャッシュされていません。20メガのアイテムサイズには「ソフト」最大値があることを理解しています。
このオブジェクトをキャッシュするためにデフォルトの最大アイテム サイズを変更するにはどうすればよいですか?
Memcached バケットまたは Couchbase バケットを使用していますか? Memcached バケットを使用している場合は、1MB の制限に達している可能性があります。簡単なサンプル プログラム:
var config = new CouchbaseClientConfiguration();
config.Urls.Add(new Uri("http://127.0.0.1:8091/pools/default"));
config.Bucket = "memcached";
config.BucketPassword = "qwerty";
var client = new CouchbaseClient(config);
var size = 1000000;
var sb = new StringBuilder();
for (int i = 0; i < size; i++) { sb.Append("z"); };
var data = sb.ToString();
var result = client.Store(StoreMode.Set, "foo", data);
Console.WriteLine(data.Length + ": " + result);
size
変数が 1000000 に設定されている場合result
は true です。size
が 1 MB 強 (たとえば 1100000) に設定されている場合、falseresult
になります。代わりに Couchbase バケットを使用する場合は、size
20000000 に設定するresult
と true になります。ただし、size
21000000 に設定すると、Store
操作が失敗します。
Memcached バケットを使用していない場合はお知らせください... また、このサンプルでは 1.8 サーバーで .NET 1.0 クライアントを使用していることにも注意してください。
-- ジョン
CouchbaseフォーラムのMikeWによる投稿はこちら:
これには、ソース コードの定数を変更し、Couchbase を自分で構築する必要があります。
それを回避する方法はないようです。助けてくれてありがとう。