我可以在一个缓存中缓存多个表,还是需要为每个表维护单独的缓存?

时间:2018-10-24 13:42:04

标签: java performance caching guava

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

1 个答案:

答案 0 :(得分:0)

  

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

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

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

然后您可以通过以下方式访问缓存:

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

每个表使用专用的缓存通常更快,并且可以安全地分配对象。但是,如果您有很多表,那么最终将需要配置和监视大量缓存。因此,为了简化操作,共享缓存可能会更好。