首页 > 解决方案 > 这个 PostEvictionCallback 什么时候会被调用?

问题描述

这是我的代码:

public void IncrementValue(string key){

   int currentCount = _cache.Get<int>(key);

   var options = new MemoryCacheEntryOptions()
   {
       AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(1)
   };

   options.RegisterPostEvictionCallback(UpdateDatabase);
   _cache.Set(key, currentCount + 1, options);
}

更新数据库

private void Updatedatabase(object key, object value, EvictionReason reason, object state)
{
    int currentCount = int.Parse(value.ToString());
    _repository.AddNew(key.ToString(), currentCount);
}

想象一下(第一个)密钥是在13:35PM 创建的,然后我将密钥的值更新了几次,直到13:54. UpdateDatabase什么时候调用该方法?在14:45或 在14:54?

编辑:

当前问题:我可以看到每次都覆盖过期并且 AbsoluteExpirationRelativeToNow 正在更新,因此它永远不会过期,我该如何解决这个问题?

标签: c#asp.net.net

解决方案


每次_cache.Set()调用函数时都会调用 UpdateDatabase,这是因为值被替换,这将触发PostEvictionCallback. 将EvictionReason具有值:Replaced


推荐阅读