C# 为什么要在代码中使用缓存?

C# 为什么要在代码中使用缓存?,c#,multithreading,caching,C#,Multithreading,Caching,我正在研究被System.Runtime.Caching类弃用的缓存应用程序企业库。对于这种缓存概念,为什么我应该使用这些缓存框架,而不是在我的程序中使用一些全局对象来保存软件生命周期中的对象,如果需要,这些对象可以保存在数据库或文件系统中。使用它有什么好处?这仅仅是因为线程安全的目的,还是我应该在什么时候使用它而不是我自己的全局对象 有人能给我一个现实生活中很好的场景,我应该在项目中加入这个缓存机制(例如,多线程) 谢谢 Wei缓存库的有用部分是,它们可以在满足某些条件后(通常在一段时间后)自

我正在研究被System.Runtime.Caching类弃用的缓存应用程序企业库。对于这种缓存概念,为什么我应该使用这些缓存框架,而不是在我的程序中使用一些全局对象来保存软件生命周期中的对象,如果需要,这些对象可以保存在数据库或文件系统中。使用它有什么好处?这仅仅是因为线程安全的目的,还是我应该在什么时候使用它而不是我自己的全局对象

有人能给我一个现实生活中很好的场景,我应该在项目中加入这个缓存机制(例如,多线程)

谢谢


Wei

缓存库的有用部分是,它们可以在满足某些条件后(通常在一段时间后)自动从缓存中删除项

在项目中开始使用缓存的一个很好的理由是提高性能。。。如果您有一个网站需要为每个页面加载查询数据库,您可以缓存数据库结果,这样您的页面就不需要每次都访问数据库。这会显著增加页面加载时间,并允许您的站点为更多用户提供服务


当您使用缓存时,您是在用实时数据换取性能的提高。知道何时使缓存项过期以防止使用过时数据是一个广泛的问题。

但以下是为什么您可能希望使用System.Runtime.Caching.MemoryCache而不是全局对象:

  • 您可以控制MemoryCache将使用的内存量
  • 内存缓存是线程安全的。不过,您需要注意这一点,因为尽管对缓存本身的访问是线程安全的,但这并不意味着缓存中的项是线程安全的
  • 放入缓存的每个项都可以有自己的过期或逐出策略,并且可以挂接到从缓存中删除项时触发的事件
  • 有内置的性能计数器,可用于监视MemoryCache的性能