【发布时间】:2016-06-10 04:18:47
【问题描述】:
我想在 couchbase 服务器上设置 TTL(生存时间),以便从移动设备连续推送所有文档以进行复制。我没有在文档中找到任何明确的解释/示例来执行此操作。 对于从移动设备通过 Sync Gateway 到服务器的文档设置 TTL 的方法应该是什么。
方法一: 一种方法是在服务器端创建一个视图,该视图将返回 createdDate 作为键。我们将在该视图中查询今天日期的键,这将返回今天的文档,我们可以为这些文档设置 TTL。但是我们如何以及何时调用此视图?这是一个好方法吗?
方法 2: 我是否应该使用 webhook 来监听通过 Couchbase Lite 推送复制所做的文档更改(创建),为新文档设置 TTL 并保存回 Couchbase 服务器?
还有其他更好的方法吗?
还有什么方法可以为特定文档设置 TTL?
编辑:我的最终方法: 我将在 couchbase 服务器上创建以下视图:
function (doc, meta) {
emit(dateToArray(doc.createdDate));
}
我将有一份每天在 EOD 运行的工作,查询视图以获取今天创建的文档并为这些文档设置 TTL。 这样我就可以定期删除文档。
如果有任何问题或有更好的方法,请告诉我。
【问题讨论】:
-
您使用哪个库来访问
Couchbase?每个库都提供像add和set这样的方法,其中肯定有一个参数,您可以通过该参数设置Key 的TTL。如需仅为特定文档设置 TTL,请参阅 developer.couchbase.com/documentation/server/current/sdks/… -
我正在使用 .net sdk。我已经浏览了上述文件。但是,它适合通过 Sync Gateway 将文档从移动设备复制到服务器的流程中的什么地方呢?我将如何访问这些文档并为其设置 TTL?
-
在您的系统中您可以通过库访问 Couchbase 的地方,您将使用库函数来设置 TTL。每个文档都将由一个密钥标识。所以你需要把这个关键信息传递给图书馆。假设 Module_A 可以访问 Couchbase,并且在 Module_X 中生成了复制文档的请求,那么您需要将所有必要的信息从 Module_X 传递给 Module_A。 Module_X 也应该有文档信息和代表 Couchbase 中文档的
Key。
标签: couchbase