序列化和反序列化 POJO 的开销是否是使用 Infinispan 而不是 Memcached 或 Redis 来缓存 POJO 的一个很好的理由?
Is the overhead of serializing and deserializing POJOs a good reason for using Infinispan over Memcached or Redis for caching POJOs?
我需要每天缓存不同的用户和应用程序数据。
上下文:
- 没有使用缓存的经验
- 正在开发一个 java 网络应用程序,该应用程序向用户发送以用户源格式显示的新闻文章
MySQL
后端
Java
中间层使用 Hibernate
和 Jersey
我检查了不同的缓存技术,似乎 Memcached
或 Redis
是与我类似的用例中最常用的技术——许多读取和写入,即 Facebook
、Twitter
、等等
但是在使用上述两个缓存系统缓存它们之前,我必须先序列化对象。只缓存一个 POJO 似乎是一个不必要的步骤,所以我检查了 POJO 缓存并偶然发现了 JBOSS
的 Infinispan
.
有没有人有充分的理由说明为什么我不应该使用 Infinispan
而不是 Memcached
或 Redis
而不是序列化和随后的反序列化,开销问题?
Infinispan在集群模式下工作时,或者需要将数据卸载到外部存储时,将不得不面临Serialization。
好消息是:
- 你将避免任何序列化成本,除非它必须去其他地方
- 它自己的序列化机制比 Java 的标准序列化机制更有效(并且可以很好地定制)
Memcached 和 Redis 是 "external" 缓存解决方案,而使用 Infinispan,您可以保持相同的 Java 实例缓存。这是好事还是坏事取决于您的架构细节。
尽管通常您会想要使用混合解决方案:使用 Infinispan 满足您的 JVM 内需求,限制其内存使用,让它卸载本地不适合的内容到外部存储,并且很容易让它将额外的东西卸载到 Redis、Memcached、另一个 Infinispan 集群或其他几个替代方案。
您的好处是与一些流行的框架(即 Hibernate)的透明集成,并且它可以为您有效地处理序列化 - 如果需要,当它可能需要在后台发生时。
我需要每天缓存不同的用户和应用程序数据。
上下文:
- 没有使用缓存的经验
- 正在开发一个 java 网络应用程序,该应用程序向用户发送以用户源格式显示的新闻文章
MySQL
后端Java
中间层使用Hibernate
和Jersey
我检查了不同的缓存技术,似乎 Memcached
或 Redis
是与我类似的用例中最常用的技术——许多读取和写入,即 Facebook
、Twitter
、等等
但是在使用上述两个缓存系统缓存它们之前,我必须先序列化对象。只缓存一个 POJO 似乎是一个不必要的步骤,所以我检查了 POJO 缓存并偶然发现了 JBOSS
的 Infinispan
.
有没有人有充分的理由说明为什么我不应该使用 Infinispan
而不是 Memcached
或 Redis
而不是序列化和随后的反序列化,开销问题?
Infinispan在集群模式下工作时,或者需要将数据卸载到外部存储时,将不得不面临Serialization。
好消息是: - 你将避免任何序列化成本,除非它必须去其他地方 - 它自己的序列化机制比 Java 的标准序列化机制更有效(并且可以很好地定制)
Memcached 和 Redis 是 "external" 缓存解决方案,而使用 Infinispan,您可以保持相同的 Java 实例缓存。这是好事还是坏事取决于您的架构细节。
尽管通常您会想要使用混合解决方案:使用 Infinispan 满足您的 JVM 内需求,限制其内存使用,让它卸载本地不适合的内容到外部存储,并且很容易让它将额外的东西卸载到 Redis、Memcached、另一个 Infinispan 集群或其他几个替代方案。
您的好处是与一些流行的框架(即 Hibernate)的透明集成,并且它可以为您有效地处理序列化 - 如果需要,当它可能需要在后台发生时。