我目前正在使用 Spring MVC4 和 hibernate 4 开发应用程序。我已经实现了 hibernate二级缓存, 以提高性能。如果我使用 Redis ,它是内存中的数据结构存储,用作数据库,缓存等,性能会提高,但是会发生巨大变化吗?
如果您缓存什么是要缓存的东西,并避免缓存根本不应该缓存的数据,则可能会出现巨大的差异。情人眼中的美丽就像表演一样。使用hibernateAS二级缓存提供程序时,应牢记以下几个方面:
无需自定义序列化-占用大量内存 如果您使用二级缓存,则将无法使用快速序列化框架(例如Kryo),并且必须坚持使用糟糕的Java可序列化框架。
在此之上,对于每个实体类型,您将有一个单独的区域,并且在每个区域内,您将为每个实体的每个键都有一个条目。就存储效率而言,这是低效的。
缺乏存储和分发丰富对象的能力 大多数现代缓存还具有计算网格功能,将对象分成许多小块会降低您在保证数据共置的情况下执行分布式任务的能力。这在某种程度上取决于Grid提供程序,但是对于许多提供程序来说是一个限制。
次优性能 取决于您需要多少性能以及使用hibernate二级缓存的类型的应用程序是好是坏。就即插即用而言,这是件好事。。。。。。。。。。。。。。。。。。。。。设计丰富的模型还意味着更多的前期工作和更多的OOP。
高速缓存自身 上 有限的查询功能 取决于高速缓存提供程序,但是某些提供程序确实不能很好地执行带Where子句而不是ID的JOIN。例如,如果您尝试在Hazelcast上建立查询并在内存索引中进行查询,您将明白我的意思。