【问题标题】:Java Cache Data before entering to database进入数据库前的Java缓存数据
【发布时间】:2012-07-20 19:23:59
【问题描述】:

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

【问题讨论】:

  • 您的数据库肯定可以记录每笔交易的时间吗?
  • 您是在寻找速度还是更少的资源消耗?使用 RAM 总是比使用硬盘快。另一方面,您可以尝试其他缓存解决方案。
  • @PaulVargas,我认为这是个好主意。
  • @EJP 想法是一个表记录所有事务数据,例如每个方法所花费的时间,其他表保留计算记录,例如一个特定方法的 avg,max,min time。第一个表数据将被删除定期
  • 我理解这个想法。关键是所有数据都已经在数据库中。您所要做的就是对日志执行查询。您不必收集数据。

标签: java database spring caching redis


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 2013-01-18
    • 2014-05-02
    • 1970-01-01
    • 2011-01-07
    • 2019-06-03
    • 1970-01-01
    相关资源
    最近更新 更多