4

我是使用 Couchbase 的新手,我想问一个有关 Couchbase 工作流程的问题。

我将许多项目放入 Couchbase(不是 memcached 数据桶)数据桶中。我对这些项目将在数据桶中直到到期时间吗?当它到达时,Couchbase 不会自动删除它们。只有当客户要求该项目时,才会实际删除该项目。在这种情况下,Couchbase 知道该项目已过期,返回 null 并从内存中删除项目。

这对我来说很重要,因为这会极大地影响我的解决方案如何理解缓存中丢失的项目。如果一切正常,那么只有当它尚未放入缓存或已过期或它在内存中并且服务器已重新启动时,它才会丢失。即使没有可用的 RAM,Couchbase 也会始终将项目放入缓存:它只会将其放入 HDD,对吗?

如果服务器重新启动,由于 RAM 不足而存储在 HDD 上的项目会发生什么情况?他们也会被抹去吗?

4

1 回答 1

4

正如您所说,数据将保留在 Couchbase 中,直到达到到期时间:-如果到期时间设置为 0:数据将一直保留到应用程序调用 delete() 操作-如果到期时间设置为 X:数据将留在 Couchbase 中,直到达到 X(以秒为单位),Couchbase 服务器将自动失效并删除该值。

我不明白你为什么说“当它到达时,Couchbase 不会自动删除它们”,Couchbase 确实会自动删除过期项目:无论是当您尝试访问过期项目还是使用其自己的内部流程时,看看http://www.couchbase.com/docs/couchbase-devguide-2.0/about-ttl-values.html

因此,当您说仅当密钥不存在时(从未创建或自动从 Couchbase 中删除或使用显式 delete() 删除)时,您是正确的

Couchbase 会将项目首先放在 RAM 中,然后将其写入磁盘。Couchbase 负责管理内存,并尽最大努力将最常用的项目保存在内存中。因此,您显然可以管理比 RAM 容量更多的数据,您只需保持良好的平衡即可获得良好的性能并避免 I/O。

当服务器重新启动时,Couchbase 将所有数据保存在磁盘上,并在启动期间使用密钥和元数据填充内存。所以你不会失去任何东西。

我邀请您阅读这些关于 Couchbase 架构的有趣文章/文档: - http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-introduction-architecture.html - http://horicky.blogspot.fr /2012/07/couchbase-architecture.html

如果您需要更多信息,请与我们联系。

拖船

于 2012-11-12T10:35:41.327 回答