我正在使用Guava设置缓存,但是我需要缓存多个表。在上一个项目中,由于JSON对象是一个嵌套对象,因此我能够缓存多个表-一个表的JSON嵌套在另一个表的JSON中。在这种情况下,代码被设置为不会发生嵌套,因此我不能只缓存包含所有其他对象的一个JSON对象。因此,我想知道是否可以设置Guava缓存以将多个表的内容保存在一个缓存中,或者是否必须设置多个缓存。我还没有找到关于一个共享缓存的任何信息,而且我担心多个缓存可能导致的潜在性能下降。
答案 0 :(得分:0)
这样,我想知道是否可以设置Guava缓存以将多个表的内容保存在一个缓存中,或者是否必须设置多个缓存。
使用任何缓存,您都可以做到。对于共享缓存,您需要复合键,例如:
class TableIdTuple {
String tableName;
int id;
TableIdTuple(String tableName, int id) { ... }
boolean equals(...) { ... }
int hashCode() { ... }
}
然后您可以通过以下方式访问缓存:
cache.get(new TableIdTuple(tableName, id));
每个表使用专用的缓存通常更快,并且可以安全地分配对象。但是,如果您有很多表,那么最终将需要配置和监视大量缓存。因此,为了简化操作,共享缓存可能会更好。