我正在做一些设计(最初用于Java)(但将来可能会扩展到.NET?)而且我对术语“缓存”和“池”感到困惑。
据我所知,差异的主要部分是它们所包含的内容?
何时应该使用哪些指南?
那么什么是“缓存池”,在许多文章中提到了什么?
答案 0 :(得分:5)
虽然它们都指的是保持物体周围,它们是完全不同的,我不会说它们是可以互换的。
缓存 - 存储常用值,通常是因为查找和/或创建非常重要。例如如果经常使用数据库中的查找表,或者从磁盘上的文件中读取值,则将其保留在内存中并定期刷新它会更有效。
缓存仅管理缓存中的对象生存期,但不会对缓存中保留的内容施加语义。缓存也不会创建项目,只是存储对象。
池 - 用于描述由池本身管理的一组资源的术语。例如(数据库)连接池 - 当需要连接时,它从池中获取,并在完成时返回到池。
池本身处理池化对象的创建和销毁,并管理任何时候可以创建的对象数。
缓存池 - 大多数似乎描述了存在的(独立?)缓存的数量。例如。一个asp.net应用程序每个应用程序域有1个缓存(缓存不在asp.net应用程序之间共享)。字面上是一个缓存池,虽然这个术语似乎很少使用。
答案 1 :(得分:1)
缓存通常用于保存昂贵操作的结果或优化对这些结果的检索。
池用于描述可供一个或多个应用程序使用的资源集合,但允许控制这些资源的数量。
我没有碰到术语“缓存池” - 但基于快速审核,它似乎用于缓存的池,或者由池管理的缓存集合。
答案 2 :(得分:0)
我同意肯,并且添加一点 - 如果部分或全部资源在任何时候被删除,则Cache不会影响您的系统 - 数据都很容易重现/可再生,并且再现通常是自动的(你要求缓存中的某些内容,如果缓存中不存在,缓存会生成一个,保存并将其返回给您)。
“池”可以是任何东西,但是你不只是删除池对象,因为它们是旧的 - 通常一个池包含一些资源的唯一的,可能不可复制的实例。