删除couchbase存储桶中的所有文档

时间:2014-12-05 16:34:05

标签: .net couchbase

我正在使用Couchbase 3.o和.Net SDK(V2.0)。我使用它作为分布式缓存。我需要实施" Clear"清除缓存中所有项目的方法。这意味着删除存储桶中的所有文档。我没有在Bucket或Cluster上看到任何方法来执行此操作。我可以使用其他一些API吗?

由于

3 个答案:

答案 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);
}
相关问题