This is my code:
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);
}
And UpdateDatabase:
private void Updatedatabase(object key, object value, EvictionReason reason, object state)
{
int currentCount = int.Parse(value.ToString());
_repository.AddNew(key.ToString(), currentCount);
}
Imagine the (first)key is created at 13:35 PM, then I update the key's value a couple times until 13:54. When will the UpdateDatabase method be called ? at 14:45 or at 14:54 ?
Edit:
Current question: I can see that the expiration is overwritten each time and the AbsoluteExpirationRelativeToNow is being updated so it never expires, how can I fix this ?