Couchbase:是否可能有陈旧的冷缓存?
Couchbase: Is it possible to have stale cold cache?
我们正在考虑使用 Couchbase 作为持久缓存层。由于 Couchbase 首先将缓存项写入内存并异步同步到磁盘,因此我们担心的一个问题是崩溃一致性。如果某些缓存项目在内存中更新,并且 Couchbase 在将它们提交到磁盘之前崩溃,那么当 Couchbase 重新启动时,这些项目将过时。
我的问题是:
- Couchbase 会检测并报告这些项目已过时吗?如果是这样,我们可以丢弃这些项目,因为它们是缓存。
- 是否有任何其他特定于 Couchbase 的方法来处理陈旧的缓存问题?
我认为没有办法检测文档是否过时,因为(在您的情况下)它们在崩溃前没有写入磁盘。
但是,您可以在创建文档时指定durability requirements。默认情况下,如果写入进入内存,则认为写入成功。您可以添加其他约束,例如 "PersistTo"(在写入被视为成功之前,文档必须持久保存到 N 个节点)。
我们正在考虑使用 Couchbase 作为持久缓存层。由于 Couchbase 首先将缓存项写入内存并异步同步到磁盘,因此我们担心的一个问题是崩溃一致性。如果某些缓存项目在内存中更新,并且 Couchbase 在将它们提交到磁盘之前崩溃,那么当 Couchbase 重新启动时,这些项目将过时。
我的问题是:
- Couchbase 会检测并报告这些项目已过时吗?如果是这样,我们可以丢弃这些项目,因为它们是缓存。
- 是否有任何其他特定于 Couchbase 的方法来处理陈旧的缓存问题?
我认为没有办法检测文档是否过时,因为(在您的情况下)它们在崩溃前没有写入磁盘。
但是,您可以在创建文档时指定durability requirements。默认情况下,如果写入进入内存,则认为写入成功。您可以添加其他约束,例如 "PersistTo"(在写入被视为成功之前,文档必须持久保存到 N 个节点)。