服务器上的静态并发集合存储在哪里?

时间:2014-11-12 19:00:51

标签: .net caching iis static

我正在使用一个使用静态ConcurrentDictionary对象进行缓存的类。请求数据时,它首先查看ConcurrentDictionary。如果在那里找不到它,则从数据库中检索它,并将其放入ConcurrentDictionary。

数据在多个请求中保留在此集合中,应该如此。但是这种特殊行为是由于它是ConcurrentDictionary而不是常规Dictionary,还是只是任何静态对象的行为?

此外,有时当我加载页面时,它必须从数据库重新加载数据。这些数据存储在何处,以及导致此缓存/字典清除的原因是什么? IIS中是否存在控制此操作的网站或应用程序池的超时设置?

1 个答案:

答案 0 :(得分:1)

使用多个线程时,

ConcurrentDictionary非常棒 - 它可以防止对同一个键进行多次“写入”操作。

在跨多个请求/用户处理共享数据时,static变量很棒(但可能不是线程安全的)。

简而言之:

  • 由于其static属性,它正在多个用户之间共享。
  • 它阻止多个线程访问字典,因为它是ConcurrentDictionary

关于问题的第二部分:

  在应用程序之前,

您的类的静态变量不会被垃圾回收   托管您的课程的域名已卸载

看看这个答案:How and when are c# Static members disposed?