2

我正在做一些设计(最初是为 Java 设计的)(但将来可能会扩展到 .NET?),我对“缓存”和“池”这两个术语感到困惑。

据我所知,主要区别在于它们包含什么?

关于什么时候应该使用的任何指导方针?

那么,许多文章中提到的“缓存池”是什么?

4

3 回答 3

5

尽管它们都指保持物体在身边,但它们完全不同,我不会说它们是可以互换的。

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

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

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

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

缓存池- 似乎主要描述了存在的(独立?)缓存的数量。例如,一个 asp.net 应用程序的每个应用程序域有 1 个缓存(缓存不在 asp.net 应用程序之间共享)。字面意思是缓存池,尽管这个术语似乎很少使用。

于 2008-11-13T21:53:53.370 回答
1

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

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

我没有遇到过“缓存池”这个术语——但根据快速回顾,它似乎用于缓存,或由池管理的缓存集合。

于 2008-11-13T21:34:25.000 回答
0

我同意 Ken 的观点,并补充一点——如果在任何时候从其中删除部分或全部资源,缓存不会影响您的系统——数据都很容易重现/可重新获取,并且重现通常是自动的(您向缓存请求某些东西,如果它在缓存中不存在,缓存会生成一个,保存并返回给您)。

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

于 2008-11-13T21:46:06.787 回答