java - 我可以在一个缓存中缓存多个表,还是需要为每个表维护单独的缓存?
问题描述
我正在使用 Guava 设置缓存,但我需要缓存多个表。在之前的项目中,由于 JSON 对象是嵌套对象,我能够缓存多个表 - 一个表的 JSON 嵌套在另一个表的 JSON 中。在这种情况下,代码设置为不会发生嵌套,因此我不能只缓存一个包含所有其他对象的 JSON 对象。因此,我想知道是否可以设置 Guava 缓存以将多个表的内容保存在一个缓存中,或者我是否必须设置多个缓存。我还没有发现任何关于共享缓存的信息,而且我担心多个缓存可能导致的潜在性能损失。
解决方案
因此,我想知道是否可以设置 Guava 缓存以将多个表的内容保存在一个缓存中,或者我是否必须设置多个缓存。
使用任何缓存,您都可以做到这两点。对于共享缓存,您需要复合键,例如:
class TableIdTuple {
String tableName;
int id;
TableIdTuple(String tableName, int id) { ... }
boolean equals(...) { ... }
int hashCode() { ... }
}
然后您可以使用以下命令访问缓存:
cache.get(new TableIdTuple(tableName, id));
为每个表使用专用缓存通常更快并且可以保护对象分配。然而,如果你有很多表,你最终会得到很多缓存来配置和监控。因此,为了使操作更容易,共享缓存可能会更好。
推荐阅读
- postgresql - 在 Postgresql 中为列创建行
- c - 即使是 300 个字符输入,代码也无法正确运行
- swift - startTurnByTurnNavigation 最大值 viaWaypoints
- bash - 列出特定路径的目录作为 bash 脚本的自动完成选项?
- fluent - 在fluentd中如何解析日志并根据键值创建字段
- python-3.x - 将结果保存到 csv 文件:TypeError: writerows() 参数必须是可迭代的
- java - 如何在 Java 中对字节数组中的补充 unicode 字符进行编码?
- java - TurboFilter 用于限制记录的异常 - 不起作用
- xamarin - Xamarin / Visual Studio 在 Xamarin.Android 中选择核心库而不是特定平台库
- excel - 选择那些只有产品 A 或 B 的客户