Membase缓存过期策略

时间:2012-03-21 10:41:33

标签: membase

我向couchbase缓存添加一个值,到期时间为1秒,但是它已超过20秒。什么是membase的缓存过期策略?

这是我的代码

    public string TestCache()
    {
        String spoon = null;
        using (var client = new CouchbaseClient())
        {

            spoon=client.Get<string>("Spoon");
            if(string.IsNullOrEmpty(spoon))
            {
                client.Store(StoreMode.Set,
                             "Spoon",
                             "Hello, Couchbase! Cache data is" + DateTime.Now.ToString(),
                             TimeSpan.FromSeconds(1));
            }

            spoon = client.Get<string>("Spoon");
        }

        return string.IsNullOrEmpty(spoon)
        ? "Can not get data from cache"
        : "Data from cache: " + spoon;
    }

1 个答案:

答案 0 :(得分:0)

首先,如果你设置的东西在1秒内到期,如果超过1秒后你要求它,你将无法从Membase中获得它。我猜你之后看到过期的原因是你指定的是绝对时间,服务器和客户端的时间是不同的。如果您的服务器落后于客户端20秒,那么我希望看到这种行为。尝试将到期时间设置为1然后您应该看到正确的事情发生。对于小于30天的值,时间是相对的。超过30天的时间是绝对的。

当项目过期时,Membase内部不会立即删除。有一个到期任务,默认情况下每1小时运行一次,并遍历所有密钥并删除过期密钥。如果您有许多密钥到期,那么您可以将到期任务设置为更频繁地运行。项目过期的另一种方式是当Membase缓存变满并且项目从内存中逐出时。此任务也可以删除过期的项目。