Caching 序列化和反序列化POJO的开销是在Memcached或Redis上使用Infinispan缓存POJO的一个好理由吗?
我需要每天缓存不同的用户和应用程序数据 背景:Caching 序列化和反序列化POJO的开销是在Memcached或Redis上使用Infinispan缓存POJO的一个好理由吗?,caching,redis,memcached,infinispan,Caching,Redis,Memcached,Infinispan,我需要每天缓存不同的用户和应用程序数据 背景: 没有使用缓存的经验 使用java web应用程序向以用户提要格式显示的用户发送新闻文章 MySQL后端 Java中间层使用Hibernate和Jersey 我检查了不同的缓存技术,似乎Memcached或Redis是与我类似的用例中使用最多的技术——许多读写操作,如Facebook,Twitter,等等 但我必须先序列化对象,然后才能使用上述两个缓存系统缓存它们。仅仅缓存一个POJO似乎是不必要的步骤,所以我检查了POJO缓存,偶然发现了JBO
- 没有使用缓存的经验
- 使用java web应用程序向以用户提要格式显示的用户发送新闻文章
后端MySQL
中间层使用Java
和Hibernate
Jersey
Memcached
或Redis
是与我类似的用例中使用最多的技术——许多读写操作,如Facebook
,Twitter
,等等
但我必须先序列化对象,然后才能使用上述两个缓存系统缓存它们。仅仅缓存一个POJO似乎是不必要的步骤,所以我检查了POJO缓存,偶然发现了JBOSS
的Infinispan
有没有人有什么好的理由不让我在序列化和后续反序列化、开销问题上使用
Infinispan
而不是Memcached
或Redis
好消息是:
-您将避免任何序列化成本,除非它必须转移到其他地方
-它自己的序列化机制远比Java的标准序列化机制更高效(并且可以很好地自定义)
Memcached和Redis是“外部”缓存解决方案,而使用Infinispan,您可以缓存相同的Java实例。这是好是坏取决于您的体系结构细节
尽管您通常希望使用混合解决方案:根据您在JVM中的需要使用Infinispan,限制其内存使用量,让它卸载本地不适合外部存储的内容,并且很容易让它将额外的内容卸载到Redis、Memcached、另一个Infinispan集群或其他几个替代方案
您的优势在于与一些流行框架(如Hibernate)的透明集成,并且它可以为您高效地处理序列化—如果需要,就像可能需要在后台进行一样。当Infinispan在群集模式下工作时,或者当它必须将数据卸载到外部存储时,它将不得不面对序列化 好消息是: -您将避免任何序列化成本,除非它必须转移到其他地方 -它自己的序列化机制远比Java的标准序列化机制更高效(并且可以很好地自定义) Memcached和Redis是“外部”缓存解决方案,而使用Infinispan,您可以缓存相同的Java实例。这是好是坏取决于您的体系结构细节 尽管您通常希望使用混合解决方案:根据您在JVM中的需要使用Infinispan,限制其内存使用量,让它卸载本地不适合外部存储的内容,并且很容易让它将额外的内容卸载到Redis、Memcached、另一个Infinispan集群或其他几个替代方案
您的优势在于与一些流行框架(如Hibernate)的透明集成,并且它可以在需要时为您高效地处理序列化,因为这可能需要在后台进行。Memcached和Redis是用作缓存的分布式密钥/值存储。使用分布式Infinispan缓存无法绕过序列化。@mp911de但Infinispan不缓存java对象而不序列化它们吗?如果在本地模式下运行Infinispan而不进行复制,则为True。如果是这样,那么EhCache或Guava Cache是更轻量级的选择。Memcached和Redis是用作缓存的分布式密钥/值存储。使用分布式Infinispan缓存无法绕过序列化。@mp911de但Infinispan不缓存java对象而不序列化它们吗?如果在本地模式下运行Infinispan而不进行复制,则为True。如果是这样,那么EhCache或Guava Cache是更轻量级的选择。如果我已经在使用
Infinispan
,为什么要使用除Infinispan
之外的缓存解决方案将数据卸载到外部存储?我不能在集群模式下使用另一个Infinispan
实例来做同样的事情吗?是的,您可以。事实上,这是一个常见的选择。这并不是选择Infinispan的主要原因,因为如果您只需要一个非群集的外部缓存,那么它们几乎可以互换。如果我已经在使用InfinispanInfinispan
,为什么要使用Infinispan以外的缓存解决方案来将数据卸载到外部存储?我不能在集群模式下使用另一个Infinispan
实例来做同样的事情吗?是的,您可以。事实上,这是一个常见的选择。这并不是选择Infinispan的主要原因,因为如果您只需要一个非集群的外部缓存,那么它们几乎可以互换。