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

时间:2013-12-12 19:38:48

标签: c# multithreading caching

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

有人可以给我一个真实的好景象,我应该在项目中加入这种缓存机制(例如,多线程)。

谢谢,

2 个答案:

答案 0 :(得分:1)

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

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

当您使用缓存时,您正在交易实时数据以提高性能。知道何时使缓存的项目到期以防止使用陈旧数据是“two hard things in computer science”之一。

答案 1 :(得分:1)

有一个广泛的问题,但这就是你可能想要使用System.Runtime.Caching.MemoryCache而不是全局对象的原因:

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