我正在使用Couchbase 3.o和.Net SDK(V2.0)。我使用它作为分布式缓存。我需要实施" Clear"清除缓存中所有项目的方法。这意味着删除存储桶中的所有文档。我没有在Bucket或Cluster上看到任何方法来执行此操作。我可以使用其他一些API吗?
由于
答案 0 :(得分:4)
Couchbase .NET SDK有一个flush命令,下面是一个如何使用它的例子:
var configuration = new ClientConfiguration
{
Servers = new List<Uri>
{
new Uri(ConfigurationManager.AppSettings["bootstrapUrl"])
}
};
using (var cluster = new Cluster(configuration))
{
using (var bucket = cluster.OpenBucket())
{
var manager = bucket.CreateManager("Administrator", "");
var result = manager.Flush();
Assert.IsTrue(result.Success);
}
}
答案 1 :(得分:2)
您要查找的关键字是&#34; flush&#34;。这是为了这个任务。我知道在服务器上有a REST API call这样做,但我认为.NET SDK 2.0中还有一种方法可以做到这一点。只需确保您打开flush capability at the bucket level on the server即可。否则它永远不会起作用。
作为一个整体缓存失效策略,我宁愿看到你在Couchbase中放入的每一段数据上设置一个TTL,让Couchbase随着时间的推移删除这些对象,而不是像你那样倾倒缓存的开销。谈论。
完全不同的说明,请确保您使用的是2.0 .NET SDK的GA版本,因为它刚刚发布,而且Couchbase 3.0.1因为3.0版本中存在一个令人讨厌的错误。
答案 2 :(得分:1)
这不是couchbase中的标准操作(也不是memcached中的标准操作)。最好的方法是在couchbase服务器中实现一个列出所有文档密钥的视图,然后在所有密钥上调用Remove。
视图定义就像这样(在javascript中):
function (doc, meta)
{
emit(meta.id, null);
}