Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Caching 序列化和反序列化POJO的开销是在Memcached或Redis上使用Infinispan缓存POJO的一个好理由吗?_Caching_Redis_Memcached_Infinispan - Fatal编程技术网

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的主要原因,因为如果您只需要一个非群集的外部缓存,那么它们几乎可以互换。如果我已经在使用Infinispan
Infinispan
,为什么要使用Infinispan以外的缓存解决方案来将数据卸载到外部存储?我不能在集群模式下使用另一个
Infinispan
实例来做同样的事情吗?是的,您可以。事实上,这是一个常见的选择。这并不是选择Infinispan的主要原因,因为如果您只需要一个非集群的外部缓存,那么它们几乎可以互换。