App Fabric 缓存提供程序的到期日期 Reset/Overriden
Expiration Date Reset/Overriden on App Fabric Cache Provider
我正在使用
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
正如您所注意到的 - 并且如文档所述 - Put
方法 "Adds or replaces an object in the cache"
因此您必须使用允许您指定时间跨度的 overload of Put
,即:
cache.Put("key", 20, TimeSpan.FromMilliseconds(30000));
什么
我最终做的是在将新项目添加到缓存之前获取现有项目的超时。
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
}
我正在使用
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
正如您所注意到的 - 并且如文档所述 - Put
方法 "Adds or replaces an object in the cache"
因此您必须使用允许您指定时间跨度的 overload of Put
,即:
cache.Put("key", 20, TimeSpan.FromMilliseconds(30000));
什么 我最终做的是在将新项目添加到缓存之前获取现有项目的超时。
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
}