【发布时间】:2015-07-24 07:06:51
【问题描述】:
让我们支持我们用 java 开发应用程序并拥有一个大表。为了提高性能,我们想要缓存数据。这里我们有两种缓存方式:
- 对象缓存 - 按 ID。
- 集合缓存 - 缓存 id 集合(!)
集合缓存示例。我们有一个 sql 查询 SELECT * FROM person WHERE birhddate=A AND age<B ORDER BY firstName,lastName。对于这个查询,我们缓存 id 集合。现在,对于相同的查询,我们可以使用缓存。但是,这种缓存的问题在于,如果有任何更新/创建/删除,所有集合缓存都会变旧并且不能再使用。
这些是问题 -
- 在实践中是否使用了集合缓存?
- 是否有任何模式/解决方案/lib 可用于 java/算法与集合缓存一起使用?
【问题讨论】:
-
@Chris Martin 感谢您抽出宝贵时间。我使用番石榴缓存。但是,据我所知,它只使用键值缓存。
-
缓存 id 可能会导致昂贵的
IN子句。这可以通过使用远程缓存(memcached、redis)来减少,其中多重获取非常有效。数据库级别的物化视图也可以提供显着的加速。 -
让我们假设……值得解释一下
table是什么,big是什么意思(你的问题和你的标签都没有提到 RDB 或类似的东西(你做提到 CUD,如果没有 R))。
标签: java algorithm caching design-patterns