2012-07-22 47 views
0

我们必须实现一个监控模块到现有的Web应用程序。该应用程序的目的是记录在运行时执行的每个方法所花费的时间并保存到2个监控表。由于在应用程序中发生了很多方法调用,每次执行一个方法时我们都不能保存到表中。我们使用spring aop来拦截时间。我们使用redis来缓存数据,并且在每十分钟内,将数据从缓存和保存在数据库中。但redis似乎是一个麻烦的想法,因为它不断建立新的连接,这给应用程序一个噩梦。是否有任何其他方式来做到这一点。我们考虑写入一个文件,并从数据该文件定期。但这似乎也是一个资源消耗解决方案。Java Cache数据在进入数据库之前

+1

您的数据库当然可以记录每笔交易的时间吗? – EJP 2012-07-22 03:57:25

+1

你在寻找速度还是消耗少的资源?使用RAM始终比使用硬盘快。另一方面,您可以尝试其他缓存解决方案。 – 2012-07-22 04:04:42

+0

@ PaulVargas,我认为它是个好主意。 – ghTvNath 2012-07-22 05:01:42

回答

1

我建议将所有内容存储在Java应用程序中。如果您只需要一些统计数据,您可以在HashMap中跟踪这些信息,并从另一个线程每隔10分钟将数据写入数据库。最小/最大/平均时间不会占用太多内存,并且可以在将统计信息写入数据库后重置统计信息。

如果因为某些原因不满足您的需求,Redis应该快速,甚至可以帮助您计算您的统计数据。我会设置一个连接池,以防止它每次都建立一个新的网络连接。然后,我会在您的Redis客户端中使用异步写入(流水线)来加速写入。杰迪斯和JRedis都支持这一点。