【问题标题】:How can I change default Couchbase item size?如何更改默认的 Couchbase 项目大小?
【发布时间】:2012-02-14 13:28:24
【问题描述】:

我正在使用包含 Enyim.Caching 的 .NET Couchbase 客户端 API。我有一个大约 55 兆的 DataTable,它没有被缓存。我了解 20 兆的项目大小有一个“软”最大值。

如何更改默认最大项目大小以缓存此对象?

【问题讨论】:

  • 状态码 3 是 E2BIG,如果对象小于 20MB,您不应该得到它。您可以仔细检查尺寸并发布您的代码吗?
  • 已编辑问题。我把小数点放错地方了。该项目是 55 兆而不是 5.5 兆。感谢您的帮助!

标签: c# couchbase membase enyim


【解决方案1】:

您使用的是 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 将是假的。如果您改用 Couchbase 存储桶,则可以将 size 设置为 20000000,result 将为真。但是,将size 设置为21000000 会导致Store 操作失败。

如果您不使用 Memcached 存储桶,请告诉我...另外,请注意,我在此示例中使用带有 1.8 服务器的 .NET 1.0 客户端。

-- 约翰

【讨论】:

  • 感谢您的回复,但实际上我改变了问题,因为我最初计算错误的字节数。我试图存储 55 兆而不是 5.5 兆,这改变了我的问题。不过,我正在使用带有 .NET Couchbase Client API 的 Couchbase v1.8。
  • 在使用 Memcached 存储桶时,有没有办法绕过 1MB 的限制?
【解决方案2】:

来自 Couchbase 论坛帖子 here 的 Per MikeW:

这需要修改源代码中的一个常量并自己构建 Couchbase。

似乎没有办法解决它。感谢您的帮助。

【讨论】:

    猜你喜欢
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 2017-01-23
    相关资源
    最近更新 更多