序列化和反序列化POJO的开销是使用Infinispan而非Memcached或Redis缓存POJO的一个很好的理由吗?

时间:2016-05-31 19:38:46

标签: caching redis memcached infinispan

我需要每天缓存不同的用户和应用程序数据。

上下文:

  • 没有使用缓存的经验
  • 致力于向用户提供格式的用户发送新闻文章的java Web应用程序
  • MySQL后端
  • Java使用HibernateJersey
  • 的中间层

我已经检查了不同的缓存技术,似乎MemcachedRedis是与我类似的用例中使用最多的技术 - 许多读写,即{{1 },Facebook

但是我必须在使用上述两个缓存系统缓存对象之前对其进行序列化。这似乎是一个不必要的步骤来缓存POJO,所以我检查了POJO缓存并偶然发现了Twitter JBOSS

有没有人有充分的理由说明为什么我不应该使用Infinispan而不是InfinispanMemcached而不是序列化,以及随后的反序列化,开销问题?

1 个答案:

答案 0 :(得分:5)

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

好消息是:   - 除非必须去其他地方,否则你将避免任何序列化成本   - 它自己的序列化机制远比Java的标准序列化机制(并且可以很好地定制)

Memcached和Redis是“外部”缓存解决方案,而使用Infinispan,您可以保持缓存相同的Java实例。如果这是好的或坏的,取决于您的架构细节。

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

您的好处是与一些流行的框架(即Hibernate)透明集成,并且它可以为您高效地处理序列化 - 如果需要,可能需要在后台进行。