2016-05-31 25 views
1

我需要每天缓存不同的用户和应用程序数据。序列化和反序列化POJO的开销是在Memcached或Redis上使用Infinispan缓存POJO的一个很好的理由吗?

语境:

  • 与缓存
  • 上,使用发送新闻文章在用户订阅源格式
  • MySQL后端
  • Java中间排显示的用户的Java Web应用程序的工作没有经验Hibernate and Jersey

我已经签出不同的缓存技术,而且好像MemcachedRedis是最常用的技术,用例类似地雷 - 许多读取和写入即FacebookTwitter

但我必须序列在我使用上面两个缓存系统缓存它们之前,我需要使用这些对象看起来像缓存一个POJO似乎是一个不必要的步骤,所以我检查了POJO缓存并偶然发现了JBOSSInfinispan

有没有人有什么好的理由为什么我不应该使用Infinispan而不是MemcachedRedis以上的序列化,以及后续的反序列化,开销问题?

+0

的Memcached和Redis的分布用作缓存键/值存储。你无法绕过使用分布式Infinispan缓存的序列化。 – mp911de

+0

@ mp911de但不Infinispan缓存Java对象,而不必序列化它们? –

+0

如果在本地模式不带复制的情况下运行Infinispan,则为true。如果是这样,那么EhCache或Guava Cache是​​更轻量级的选择。 – mp911de

回答

5

当Infinispan的工作在集群模式下,或当它卸载数据到外部存储,它将不得不面对的序列化。

好消息是: - 你会避免任何序列化的成本,除非它有去别的 地方 - 它自己的序列化机制比Java的标准序列化机制更为有效(并很好地定制)

的Memcached和Redis是“外部”缓存解决方案,而Infinispan则可以保留相同的Java实例缓存。如果这是好事还是坏事取决于你的架构细节。

虽然通常您会想要使用混合解决方案:使用Infinispan来满足您的JVM内存需求,限制其内存使用量,让它卸载本地不适合外部存储的容量,并且很容易它将额外的东西卸载到Redis,Memcached,另一个Infinispan集群或其他几个替代品上。

你的好处和一些流行的框架(即休眠)的透明集成,它能够有效地处理序列适合你 - 如果和需要的时候,因为它可能需要在后台发生。

+0

如果我已经使用'Infinispan',为什么我要使用Infinispan以外的缓存解决方案将数据卸载到外部存储?我不能在集群模式下使用另一个Infinispan实例来做同样的事情吗? –

+1

是的,你可以。实际上这是一个普遍的选择。它只是不是选择Infinispan的主要原因,因为如果你需要的只是一个非集群的外部Cache,那么它们几乎可以互换。 – Sanne

相关问题