我在Glassfish上运行了一个消息驱动的bean。它每秒接收数百条消息。收到消息后,需要读取JDBC数据库和进程中的值。
但是,数据库中的值只会每天更新一次或更少。因此,MDB将在大多数情况下阅读的内容是一致的。那么,是否有一种将内容缓存到内存中以提高性能的好方法?
更新:在Glassfish中为MDB配置内存数据库JDBC连接池是否可行?
答案 0 :(得分:1)
如果您认为使用第三方解决方案(如identity map pattern)会过度,您可能会受到memcached的启发并实施您自己的缓存机制(使用您自己的过期策略)。< / p>
答案 1 :(得分:0)
最明显的答案是将表定义为MEMORY表类型。如果底层硬件不容易崩溃且操作系统稳定并且连接了UPS,您可能需要考虑这个问题。它还取决于自上次备份以来丢失大量事务的后果。但在性能方面,这是闪电般的快速。可以在MySQL找到更多信息here。 (YMMV)
我已经用这种方式实现了多个表格,这对我来说很有用。
答案 2 :(得分:0)
您可以使用简单的SoftReference基于HashMap的缓存。以下是完整的实施示例SoftReference Cache此外,您可以定期清除整个地图以引入新数据。
或者如果您可以使用第三方库,您可以使用ReferenceMap作为Apache Collections的一部分提供。