【发布时间】:2016-07-07 14:09:54
【问题描述】:
我对升c 没有太多经验。我被指派实现缓存功能。我正在查看一些代码,但我不知道“key”和“dependsOnKey”指的是什么。
public void Add(string key, object o, DateTimeOffset expiration, string dependsOnKey = null)
{
var cachePolicy = new CacheItemPolicy
{
AbsoluteExpiration = expiration
};
if (!string.IsNullOrWhiteSpace(dependsOnKey))
{
cachePolicy.ChangeMonitors.Add(
Cache.CreateCacheEntryChangeMonitor(new[] { dependsOnKey })
);
}
lock (Cache)
{
Cache.Add(key, o, cachePolicy);
}
}
public void Add(string key, object o, string dependsOnKey = null)
{
DateTimeOffset dt = DateTimeOffset.Now.AddMinutes(20);
Add(key, o, dt, dependsOnKey);
}
在缓存的上下文中,key是什么意思?我明白缓存是什么概念。我查阅了一些教程,但大多数都有不同的缓存实现。
【问题讨论】:
-
如果你缓存一些东西,你需要给它一个标识符,这样当你想读取它时,你提供那个标识符来获取它。你需要知道哪把钥匙打开哪扇门,否则你会迷路。
-
所以与键值对中的键相比,键具有相似的功能?我可以给键起任何我想要的名称,还是有命名键的约定?我认为这意味着键必须是唯一的。
-
旁注:第一个赋值的有趣选择...你知道one of two hard things中的缓存:"在计算机科学中有两件困难的事情:缓存失效、命名事物和逐一错误。”
-
@Alexei Levenkov 好吧,这不是我的第一个任务。我厌倦了做同样的控制器/服务/api的东西,所以我有点要求挑战。 =X 你能详细说明什么是缓存失效以及为什么它很难吗?