這是我的代碼:
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);
}
和UpdateDatabase:
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 正在更新,因此它永遠不會過期,我該如何解決這個問題?
uj5u.com熱心網友回復:
每次呼叫該_cache.Set()函式時都會呼叫UpdateDatabase ,這是因為該值被替換,這將觸發PostEvictionCallback. 在EvictionReason將具有值:Replaced。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/355497.html
