c# - 这个 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:35
PM 创建的,然后我将密钥的值更新了几次,直到13:54
. UpdateDatabase
什么时候调用该方法?在14:45
或 在14:54
?
编辑:
当前问题:我可以看到每次都覆盖过期并且 AbsoluteExpirationRelativeToNow 正在更新,因此它永远不会过期,我该如何解决这个问题?
解决方案
每次_cache.Set()
调用函数时都会调用 UpdateDatabase,这是因为值被替换,这将触发PostEvictionCallback
. 将EvictionReason
具有值:Replaced
。
推荐阅读
- php - 使用 schtasks 时 PHP shell_exec 返回空
- javascript - 在下面的代码中比较数组?(长度/类型)JAVASCRIPT
- android - Sceneform 1.16 GLTF 更改纹理
- javascript - Vue.js - 当子组件在里面时,无法访问 this.$parent
- c# - OData IEnumerable 或 IQueryable
- php - PHP中的JSON到TABLE
- node.js - hapi 基本身份验证凭据为空
- c# - 如何防止 C# 类实例隐式转换为类名
- excel - 在Excel中的列中提取一组值的第一个值
- reactjs - react-simple-keyboard 使用 useEffect 状态的初始值无法设置