用Redis来休眠二级缓存 - 它会提高性能吗?

Tej*_*jal 10 java spring caching hibernate redis

我目前正在使用Spring MVC4hibernate 4开发一个应用程序.我已经实现了hibernate二级缓存以提高性能.如果我使用 Redis这是一个内存数据结构存储,用作数据库,缓存等,性能会提高,但会是一个剧烈的变化吗?

Ale*_*rov 7

如果您缓存缓存的内容并避免缓存根本不应缓存的数据,您可能会遇到的巨大差异.就像美女在旁观者的眼中一样,表现也是如此.在使用hibernate AS二级缓存提供程序时,您应该记住以下几个方面:

没有自定义序列化 - 内存密集型
如果你使用二级缓存,你将无法使用快速序列化框架,如Kryo,并将不得不坚持java序列化,这很糟糕.

除此之外,对于每个实体类型,您将拥有一个单独的区域,并且在每个区域内,您将拥有每个实体的每个键的条目.就内存效率而言,这是低效的.

缺乏存储和分发富对象的能力
大多数现代缓存还提供计算网格功能,将您的对象分割成许多小块,降低了执行分布式任务的能力,同时保证了数据的共存.这在一定程度上取决于Grid提供商,但对许多人来说这将是一个限制.

次优性能
取决于您需要多少性能以及使用何种类型的应用程序使用休眠二级缓存可能是一个好的或坏的选择.很好的说它是即插即用...."有点......"很糟糕,因为你永远不会挤压你会获得的表现.设计丰富的模型意味着更多的前期工作和更多的OOP.

缓存本身的有限查询功能
取决于缓存提供程序,但是某些提供程序实际上并不是在使用与ID不同的Where子句进行JOIN.例如,如果您尝试在Hazelcast上为查询构建内存索引,您将看到我的意思.