Java 使用Redis休眠二级缓存-它会提高性能吗?
我目前正在使用SpringMVC4和Hibernate4开发一个应用程序。为了提高性能,我已经实现了休眠二级缓存。如果我使用Redis,它是一种内存中的数据结构存储,用作数据库、缓存等,性能会提高,但会有很大的变化吗?是的,如果使用Redis,性能会得到提高 不,这不会是一个剧烈的变化Java 使用Redis休眠二级缓存-它会提高性能吗?,java,spring,hibernate,caching,redis,Java,Spring,Hibernate,Caching,Redis,我目前正在使用SpringMVC4和Hibernate4开发一个应用程序。为了提高性能,我已经实现了休眠二级缓存。如果我使用Redis,它是一种内存中的数据结构存储,用作数据库、缓存等,性能会提高,但会有很大的变化吗?是的,如果使用Redis,性能会得到提高 不,这不会是一个剧烈的变化 以上链接将帮助您找到将redis与您的项目集成的方法。您的问题已经在这里讨论过了。检查此链接: 这是最被接受的答案,我同意: 这实际上取决于您的应用程序查询模型和流量 要求 使用Redis/Hazelcast
以上链接将帮助您找到将redis与您的项目集成的方法。您的问题已经在这里讨论过了。检查此链接: 这是最被接受的答案,我同意: 这实际上取决于您的应用程序查询模型和流量 要求
希望有帮助 如果缓存好缓存的内容并避免缓存根本不应该缓存的数据,则可能会出现巨大的差异。就像情人眼里出西施一样,表演也是如此。在使用hibernate作为二级缓存提供程序时,您应该考虑以下几个方面: 无自定义序列化-内存密集型
如果您使用二级缓存,您将无法使用像Kryo这样的快速序列化框架,并且必须坚持使用java serializable,这很糟糕 除此之外,对于每个实体类型,您将有一个单独的区域,在每个区域内,您将为每个实体的每个键提供一个条目。 就内存效率而言,这是低效的 缺乏存储和分发丰富对象的能力
大多数现代缓存还提供了计算网格功能,将对象分割成许多小块,从而降低了执行分布式任务的能力,同时保证了数据的共享。这在一定程度上取决于网格提供商,但对许多人来说,这是一个限制 次优性能
根据您需要的性能和使用hibernate二级缓存的应用程序类型,二级缓存可能是一个好的选择,也可能是一个坏的选择。从即插即用的角度来看是好的……“有点……”不好,因为你永远不会压缩你本来可以获得的性能。此外,设计丰富的模型意味着更多的前期工作和OOP 缓存本身的查询能力有限
这取决于缓存提供程序,但有些提供程序确实不能很好地使用与ID不同的Where子句进行连接。例如,如果您尝试为Hazelcast上的查询构建内存索引,您将了解我的意思。这取决于移动 如果您每秒有1000个或更多的请求,并且RAM不足,那么可以使用其他计算机上的redis节点来使用。这将大大提高您的RAM和请求速度 但如果不是这样,就不要使用它 请记住,您可以在稍后看到RAM和数据库连接池的使用情况时使用这种方法