我正在开发一个Web应用程序,我需要在其中存储会话,用户消息等。我正在考虑使用HashMap或H2数据库。
请告诉我哪种方法在性能和内存利用方面更好。该网站必须支持10,000名用户。
感谢。
答案 0 :(得分:2)
与往常一样,当我知道这是一个问题时,我会担心表现。
10000个用户不是要在内存中保存的大量数据。我可能会从标准的Java集合开始,当你预测它会让你感到悲伤时,看一下性能。
摘要对此Java集合的访问,以便在您替换它时,所需的重构是本地化的(并且可能使其可配置,以便您可以在使用您的性能测试之前/之后轻松执行不同的解决方案-H2,Derby,Oracle等等。)
答案 1 :(得分:1)
如果您的会话对象不是太大(应该是这种情况),则无需将它们保存在数据库中。
在您开始使用几行代码的情况下,使用数据库会增加很多复杂性。所以不要使用数据库,只需将它们存储在一个内存结构(例如HashMap)中。
如果您不希望在用户长时间离开时将会话保留在内存中,则可能需要实现一种清理HashMap的方法。有许多解决方案可用(最简单的方法就是让后台线程不时删除太旧的会话)。请注意,清理散列图通常比数据库更容易。
答案 2 :(得分:0)
H2和Hash Map都会将数据保存在内存中(所以从空间的角度来看它们几乎是一样的)。
如果查找起来像KEY VALUE一样简单,那么在Hash Map中查找会更快。
如果你必须进行比较,例如KEY< 100等使用H2。
事实上,10K用户信息的数字并不高。
答案 3 :(得分:0)
如果您不需要保存用户消息 - 请使用集合。但是如果要保存消息,请务必使用数据库。因为重启后你丢失了所有数据。
答案 4 :(得分:0)