【发布时间】:2021-09-15 13:23:29
【问题描述】:
我有一个静态类,里面有一个静态列表。
public static class Translations {
public static List<string> Resources {get; set;}
}
MemoryCache 那个 List 有意义吗?或者通过静态已经保存在内存中,所有用户的相同列表并且不需要memcache它?
【问题讨论】:
-
“保存在内存中”取决于很多东西;显示的列表将与应用程序域持续一样长,这通常意味着与进程一样长;但是,某些环境会主动回收进程,这会丢失列表;这里的实际情况是什么?另外:您是否曾经在该列表中添加/删除/等?因为如果你是:这里可能存在线程竞争条件
-
MVC / 是的,我也在更新列表。那我应该memcache吗?
-
这两件事是无关的;您是否使用进程外缓存取决于 a:您的进程生命周期,以及 b:构建数据的成本 - 您还没有告诉我们这些事情中的任何一个;如果您要更新列表:您需要处理竞争问题 - 进程外缓存无济于事根本 - 它是一个完全独立的问题;这有点像问“我的车总是漏气;我应该把它涂成什么颜色?”
-
我正在使用 MemoryCache.Default。这里没有花哨的东西。我将整个 DataTable 保存在内存中(RESX 中缺少一些翻译)
-
啊,我明白了;你使用了“memcache”这个短语,我以为你的意思是进程外存储引擎——我的错,但我所说的大部分内容仍然存在
标签: c# caching memorycache