java - 缓存 java 应用程序的只读数据

标签 java caching

我有一个数据库,其中有大约 15 万条数据记录,表上有一个主键。每条记录的数据大小将小于 1kB。从 DB 记录构造 POJO 的处理时间大约需要 1-2 秒(有一些业务逻辑需要太多时间)。这是只读数据。因此,我计划实现缓存数据。我想做的是。将数据加载到子集中(每次 200 条记录)并创建一个线程来构造 POJO 并将它们保存在哈希表中。在加载缓存时(当我启动应用程序时),用户将看到一个等待标志。对于将数据存储在 HashTable 中是一个问题,我实际上将处理后的数据存储到另一个数据库表中(将 POJO 编码为 xml)。 我使用第三方 API 从数据库加载数据。加载记录后,我将加载数据,我必须为加载的数据加载关联,然后为在顶层找到的关联加载关联。这就像加载家谱。

  1. 我不能使用 Hibernate 或任何 ORM 框架,因为我正在使用第三方 API 来加载数据库本身(它是一个产品)附带的数据。此外,我认为加载一次数据不是一个大问题。
  2. 如果可以微调业务逻辑,我就不会在这里问这个问题。

按需缓存数据是一种选择,但我正在尝试看看是否可以做得更好。

如果您有更好的想法,请告诉我。谢谢。/

最佳答案

Suggest me if there is a better idea that you are aware of.

是的,修复业务逻辑,这样每条记录就不会花费 1 到 2 秒。时间长得离谱。

在您这样做之前,分析您的应用程序以确保它是真正导致记录加载缓慢的业务逻辑,而不是其他原因。 (例如,它可能是病态的数据结构,或数据库问题。)

一旦您解决了记录加载缓慢的根本原因,缓存只读记录仍然是个好主意,但您可能不需要预加载缓存。相反,只需按需加载记录。

关于java - 缓存 java 应用程序的只读数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4120851/

相关文章:

java - 在 OAuth 2.0 安全 Web 应用程序上使用 JMeter 脚本进行性能测试

javascript - 如何防止谷歌浏览器缓存我的输入,尤其是当用户点击返回时隐藏的输入?

python - 禁用 python 文件的 Apache 缓存

c# - 元编程 : write in one language X, C#、PHP、Java、C 等多种语言交叉编译

java - 为什么 Lombok @Cleanup 使用 [Collections.singletonList().get(0)]?

java - 如何散列 2D 平面中的几何点?

java - Amazon MySQL RDS 和 Hibernalte

wordpress - Cloudfront + Woocommerce - 购物车未更新

c++ - Linux C++ : how to profile time wasted due to cache misses?

Django CSRF 保护强制设置 "Vary: Cookie" header ,导致缓存效率低下