关键字:firstname值:武士expiry:6 hours
public static bool Add<T>(this IDatabase cache, string key, T value, TimeSpan? expiry = null)
{
dynamic response;
response = cache.StringSet(key, JsonConvert.SerializeObject(value, jsonSettings), expiry, flags: CommandFlags.DemandMaster);
}
return response;
}
假设此时ttl为10min。也就是说,5小时50分钟过去了,10分钟后密钥将被删除。但如果有人对这把钥匙执行get操作。到期时间应重新设置为6小时。
一种简单的方法是再次执行cache.stringset。但我担心这会降低重负荷试验的性能。有别的选择吗?
1条答案
按热度按时间50pmv0ei1#
要实现滑动过期,可以发出
KeyExpire[Async]
当你打电话的时候StringGet
. 既然你不需要知道结果,你可以用FireAndForget
为避免任何延迟成本,即不计入第二次往返:另一种方法是用lua-via包起来
ScriptEvaluate
在那里执行这两个操作,但我不认为这是必要的KeyExpire
以及StringGet
这双应该没问题。