【问题标题】:Couchbase workflowCouchbase 工作流程
【发布时间】:2012-11-12 07:15:43
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: couchbase


    【解决方案1】:

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

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

    因此,当您说只有在密钥不存在时(从未创建或从 Couchbase 自动删除或使用显式 delete() 删除)才会有“错过”(not_found)时,您是正确的

    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

    如果您需要更多信息,请告诉我。

    拖船

    【讨论】:

    • 请注意,Couchbase Server 会延迟过期,也就是说,过期的项目会被标记为已删除,而不是立即删除。 Couchbase Server 有一个维护过程,称为过期寻呼机,它将定期查看所有信息并删除过期项目。此维护过程将每 60 分钟运行一次,但可以配置为以不同的时间间隔运行。 Couchbase 服务器将在下次请求项目时立即删除标记为删除的项目;服务器将向请求进程响应该项目不存在。
    猜你喜欢
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多