2012-03-21 132 views
0

我向couchbase緩存添加一個值,過期時間爲1秒,但過期時間超過20秒。 membase的緩存過期策略是什麼?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; 
    } 

回答

0

首先,如果你設置的東西在1秒內到期,你將不能夠,如果你問它超過1秒後,從Membase的得到它。我猜想你後來看到失效的原因是你指定了一個絕對時間,並且你的服務器和客戶端的時間是不同的。如果你的服務器落後於客戶20秒,那麼我期望看到這種行爲。嘗試設置到期時間爲1,然後你應該看到正確的事情發生。對於小於30天的值,時間是相對的。超過30天的時間是絕對的。

Inside Membase當一個項目過期時,它不會立即被刪除。有一個過期任務默認每1小時運行一次,並遍歷所有密鑰並刪除過期的任務。如果您有很多密鑰過期,那麼您可以將過期任務設置爲更頻繁地運行。項目可以過期的另一種方式是當Membase緩存變滿並且項目從內存中逐出時。此任務也可以刪除過期的項目。