caching - 序列化和反序列化 POJO 的开销是否是使用 Infinispan 而不是 Memcached 或 Redis 来缓存 POJO 的一个很好的理由?

标签 caching redis memcached infinispan

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

上下文:

  • 没有使用缓存的经验
  • 开发一个 java 网络应用程序,该应用程序以用户提要格式向用户发送新闻文章
  • MySQL 后端
  • Java 使用 HibernateJersey 的中间层

我检查了不同的缓存技术,似乎 MemcachedRedis 是与我类似的用例中最常用的技术——很多读取和写入即 FacebookTwitter

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

有没有人有充分的理由说明为什么我不应该在 Memcached 上使用 Infinispan 或在序列化和后续反序列化开销上使用 Redis关注?

最佳答案

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

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

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

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

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

关于caching - 序列化和反序列化 POJO 的开销是否是使用 Infinispan 而不是 Memcached 或 Redis 来缓存 POJO 的一个很好的理由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37554277/

相关文章:

php - Laravel 事件监听器和缓存不起作用

azure - 在 Azure 上托管的 .net Core 应用程序上连接到 Redis 时出错

ruby-on-rails - 按商店搜索和分组产品 REDIS

Python-redis keys() 返回字节对象列表而不是字符串

mysql - 如何存储MySQL的结果以便以后排序

PHP PDO 准备语句缓存

java - 使用Ehcache缓存标签

php - codeigniter 数据库缓存配置

Heroku 上的 Node.js 和 Memcache ?

linux - Ubuntu Natty 上的 Memcached 集群