0

我在用

Microsoft.ApplicationServer.Caching.DataCache 用于缓存

问题是当我第一次将一个项目添加到缓存时,它会保留超时,但是如果我替换现有项目,cahce 会将超时覆盖为默认值。这是我正在使用的代码。

DataCache cache= new MyDataCahce();
// time out 30 secs
cache.Add("key",10, TimeSpan.FromMilliseconds(30000));
var temp = _cache.GetCacheItem("key");
temp.Timeout(); // minutes =  30 seconds which is correct

// Second time replace object at key
cache.Put("key",20)
var temp = _cache.GetCacheItem("key");
temp.Timeout(); // timeout reset to default and equals 10 minutes which is the default
4

2 回答 2

0

正如您所指出的 - 并且记录在案 - 该Put方法“添加或替换缓存中的对象”

因此,您必须使用允许您指定时间跨度的重载Put,即:

cache.Put("key", 20, TimeSpan.FromMilliseconds(30000));
于 2015-10-21T15:22:50.257 回答
0

我最终做的是在将新项目添加到缓存之前获取现有项目的超时。

 DataCache cache= new MyDataCahce();
    // time out 30 secs at first
    cache.Add("key",10, TimeSpan.FromMilliseconds(30000));
    var temp = _cache.GetCacheItem("key");
    temp.Timeout(); // minutes =  30 seconds which is correct


    // Second time replace object at key may be after 10 seconds
    var temp = _cache.GetCacheItem("key");
if(temp!=null) // it is not expired yet
{
    var timeOut = temp.Timeout();  // less than 30 seconds should be about 20 seconds
    cache.Put("key",20, timeOut )
    var temp = _cache.GetCacheItem("key");
    temp.Timeout(); // timeout less than 30 seconds 
}
于 2015-10-22T15:34:10.977 回答