首页 > 解决方案 > 我可以在一个缓存中缓存多个表,还是需要为每个表维护单独的缓存?

问题描述

我正在使用 Guava 设置缓存,但我需要缓存多个表。在之前的项目中,由于 JSON 对象是嵌套对象,我能够缓存多个表 - 一个表的 JSON 嵌套在另一个表的 JSON 中。在这种情况下,代码设置为不会发生嵌套,因此我不能只缓存一个包含所有其他对象的 JSON 对象。因此,我想知道是否可以设置 Guava 缓存以将多个表的内容保存在一个缓存中,或者我是否必须设置多个缓存。我还没有发现任何关于共享缓存的信息,而且我担心多个缓存可能导致的潜在性能损失。

标签: javaperformancecachingguava

解决方案


因此,我想知道是否可以设置 Guava 缓存以将多个表的内容保存在一个缓存中,或者我是否必须设置多个缓存。

使用任何缓存,您都可以做到这两点。对于共享缓存,您需要复合键,例如:

class TableIdTuple {
  String tableName;
  int id;
  TableIdTuple(String tableName, int id) { ... }
  boolean equals(...) { ... }
  int hashCode() { ... }
}

然后您可以使用以下命令访问缓存:

cache.get(new TableIdTuple(tableName, id));

为每个表使用专用缓存通常更快并且可以保护对象分配。然而,如果你有很多表,你最终会得到很多缓存来配置和监控。因此,为了使操作更容易,共享缓存可能会更好。


推荐阅读