2012-01-19 25 views
2

我正在使用包含Enyim.Caching的.NET Couchbase客戶端API。我有一個大約55兆數據表,它沒有得到緩存。我明白,20 megs的項目大小有一個「軟」最大值。如何更改默認Couchbase項目大小?

如何更改默認最大項目大小以緩存此對象?

+1

狀態碼3是E2BIG,如果對象小於20MB,則不應該獲取它。你可以仔細檢查大小,併發布你的代碼? – mikewied

+0

編輯的問題。我把小數點放在錯誤的地方。這是55梅格,而不是5.5梅格的項目。謝謝您的幫助! – DougJones

回答

0

每MikeW從Couchbase論壇帖子here

這需要在源代碼和構建Couchbase自己修改常量。

看起來好像沒有辦法繞過它。謝謝您的幫助。

2

您使用的是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是真實的。當size設置爲剛剛超過一個MB時,比如1100000,則result將爲false。如果您使用Couchbase存儲桶,則可以將size設置爲20000000,result將爲true。但是,將size設置爲21000000將導致Store操作失敗。

如果您沒有使用Memcached存儲桶,請讓我知道......另外,請注意,本示例使用.NET 1.0客戶端和1.8服務器。

約翰 -

+0

欣賞響應,但我實際上改變了這個問題,因爲我最初錯誤地記錄了字節。我試圖存儲55個megs而不是5.5個megs,這改變了我的問題。不過,我將Couchbase v1.8與.NET Couchbase客戶端API一起使用。 – DougJones

+0

使用Memcached存儲桶時,有沒有辦法繞過1MB的限制? –