Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java在进入数据库之前缓存数据_Java_Database_Spring_Caching_Redis - Fatal编程技术网

Java在进入数据库之前缓存数据

Java在进入数据库之前缓存数据,java,database,spring,caching,redis,Java,Database,Spring,Caching,Redis,我们必须对现有的web应用程序实现一个监控模块。应用程序的目的是记录在运行时执行的每个方法所花费的时间,并保存到2个监视表中。由于应用程序中有很多方法调用,我们无法在每次执行方法时都将其保存到表中。我们使用spring aop拦截时间。我们使用redis缓存数据,每十分钟,从缓存中获取数据并保存到数据库中。但redis似乎是一个麻烦的想法,因为它不断建立新连接,这给应用程序带来了一场噩梦。是否有其他方法可以做到这一点。我们考虑过写入文件并定期从文件中获取数据。但这似乎也是一个资源消耗问题解决方案

我们必须对现有的web应用程序实现一个监控模块。应用程序的目的是记录在运行时执行的每个方法所花费的时间,并保存到2个监视表中。由于应用程序中有很多方法调用,我们无法在每次执行方法时都将其保存到表中。我们使用spring aop拦截时间。我们使用redis缓存数据,每十分钟,从缓存中获取数据并保存到数据库中。但redis似乎是一个麻烦的想法,因为它不断建立新连接,这给应用程序带来了一场噩梦。是否有其他方法可以做到这一点。我们考虑过写入文件并定期从文件中获取数据。但这似乎也是一个资源消耗问题解决方案

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


如果由于某种原因,这不符合您的需要,Redis应该很快,甚至可以帮助您计算统计数据。我会设置一个连接池,以防止它每次进行新的网络连接。然后,我会在您的Redis客户端中使用异步写入(管道)来加速写入。绝地武士和JRedis都支持这一点

当然,您的数据库可以记录每个事务的时间?您是在寻求速度还是减少资源消耗?使用RAM总是比使用硬盘快。另一方面,您可以尝试其他缓存解决方案。@PaulVargas,我认为这是个好主意。@EJP的想法是一个表记录所有事务数据,如每个方法所用的时间,另一个表保留计算记录,如某个特定方法的平均、最大、最小时间。第一个表数据将定期删除。我明白这个想法。关键是所有的数据都已经在数据库中了。您所要做的就是对日志执行查询。你不必收集数据。