2008-11-13 81 views
2

我正在做一些设计(最初是针对Java)(但是可能会扩展到.NET将来?),我对术语“缓存”和“池子”。缓存/池/缓存池之间的区别指南

据我所知,差异的主要观点是它们中包含的是什么?

什么时候应该使用什么指导方针?

那么什么是在一些文章中提到的“缓存池”呢?

回答

1

缓存通常用于保存昂贵操作的结果或优化检索结果。

用于描述可供一个或多个应用程序使用但可以控制这些资源数量的资源集合。

我没有穿过术语“缓存池”运行 - 但基于快速审查,这似乎用于缓存,或由池管理的高速缓存的集合。

0

我同意Ken并添加一点 - 如果某些或所有资源随时从中删除,则缓存不会影响您的系统 - 数据很容易重现/重新设置,并且重放通常是自动的(如果缓存中不存在缓存,则缓存会生成一个缓存,然后将其保存并返回给您),那么您可以向缓存请求某些内容。

“池”可以是任何东西,但您不只是删除池对象,因为它们是旧的 - 通常池包含一些资源的独特的,可能不可重现的实例。

+0

通常情况下,池包含昂贵的创建对象。我不同意池中的项目在一般意义上是“独特的或不可重现的”。 – 2009-03-05 23:35:22

4

虽然他们都指的是保持身边的东西,但他们是完全不同的,我不会说他们是可以互换的。

缓存 - 存储常用值,通常是因为查找和/或创建不平凡。例如如果经常使用数据库的查找表,或者从磁盘上的文件读取值,那么将其保存在内存中并定期刷新它会更有效。

缓存只管理缓存中的对象生存期,但不对缓存中保存的内容施加语义。缓存也不会创建项目,而只是存储对象。

- 术语来描述由池本身管理的一组资源。例如(数据库)连接池 - 当需要连接时,它从池中获取,并在完成时返回到池中。

池本身处理创建和销毁池中的对象,并管理可以在任何时候创建多少个对象。

缓存池 - 大多数似乎描述存在的(独立?)缓存的数量。例如。一个asp.net应用程序对每个应用程序域有1个缓存(缓存不在asp.net应用程序之间共享)。从字面上看是一堆缓存,尽管这个词似乎很少使用。