首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Membase缓存过期策略

Membase缓存过期策略
EN

Stack Overflow用户
提问于 2012-03-21 18:41:33
回答 1查看 431关注 0票数 0

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

以下是我的代码

代码语言:javascript
复制
    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;
    }
EN

回答 1

Stack Overflow用户

发布于 2012-03-25 12:02:47

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

在Membase中,当一个项目过期时,它不会立即被删除。有一个过期任务,默认每1小时运行一次,迭代所有密钥并删除过期密钥。如果有很多密钥即将过期,那么可以将过期任务设置为更频繁地运行。项过期的另一种方式是当Membase缓存变满时,项被从内存中逐出。此任务还可以删除过期项目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9802912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档