【问题标题】:C#: what are keys when talking about cacheC#:谈论缓存时什么是键
【发布时间】: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 你能详细说明什么是缓存失效以及为什么它很难吗?

标签: c# caching key


【解决方案1】:

简单地说,它是一个字符串标识符,你可以在其他地方读取相同的数据,也就是:Cache.Get Method (String key)

更多内容在MSDN

请注意:

应用程序缓存中的项目存储在键/值对中。钥匙 依赖项允许一个项目依赖于另一个项目的键 在应用程序缓存中。当原始项目被移除时,该项目 具有关键依赖性的也被删除。例如,您可以 添加一个名为 ReportsValid 的缓存项,然后缓存几个报表 依赖于 ReportsValid 键。当 ReportsValid 项 被删除,所有相关的缓存报告都被类似地删除 从缓存中。

另外,值得一看:What Are the Patterns and Best Practices for Caching in ASP.NET?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-18
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    相关资源
    最近更新 更多