因此,我有一个使用Spring框架和JDBCtemplate的Java EE应用程序。而且,我的应用程序必须在同一个数据库(这是一个Postgres数据库,但由于一系列原因而未规范化),但使用不同的sql语句(不同的where子句)上执行多个JDBC数据库读取请求(无/很少写入)。所以,鉴于这种情况,我希望能够缓存数据库并能够在缓存上运行查询,从而为我节省昂贵的JDBC调用。因此,请建议适当的工具或框架或任何其他解决方案。使用Spring进行数据库缓存并能够查询它
回答
您可以从使用简单的地图开始,具体取决于您正在使用的查询参数。更可行的解决方案是使用ehcache。
如果使用Spring 3.1或更高版本,则可以在方法上使用@Cacheable
。您需要在应用程序上下文配置中包含<cache:annotation-driven />
。对于简单的情况,你可以使用Spring的ConcurrentCacheFactoryBean作为缓存管理器。对于更复杂的情况,您可以通过spring的ehcache适配器使用ehcache。使用@CacheEvict
来重置缓存。
我不是100%确定,但它看起来像@Cacheable是用于缓存方法返回,即如果方法被调用相同的参数,那么它是有道理的,所以返回相同的早期缓存结果。但在我的情况下,我不希望我的DAO函数被调用相同的参数,事实上,他们很可能会每次调用不同的不同参数(导致不同的sql查询需要被触发),因此缓存方法没有意义。 –
我认为数据库缓存很有意义,因此如果系统能够在此缓存数据库上使用不同的查询语句进行查询,则应用程序的性能会得到改善。 –
如果对@ someMethod(String someArg)使用@Cacheable,someArg值将成为缓存中的键。它不需要每次都有相同的参数。如果您传递了之前传递的参数,方法将从缓存中返回值。 – androberz
- 1. 缓存数据并查询它
- 2. 使用Node.js缓存数据库查询
- 3. 使用Criteria查询进行Hibernate缓存
- 4. 保存Excel公式数据库,并能够使用它们后来
- 5. 使用Memcached进行Spring-Hibernate缓存
- 6. NHibernate的查询缓存到数据库
- 7. 缓存数据库查询结果
- 8. CodeIgniter数据库查询缓存问题
- 9. 使用查询进行监控的数据库负载或性能数据库使用查询
- 10. 如何缓存Wordpress数据库,以便它不查询MySql?
- 11. 使用核心数据进行缓存
- 12. Spring数据存储库缓存结果
- 13. Spring,Hibernate数据库查询
- 14. 使用Groovy的并行/并行数据库查询?
- 15. spring-data:缓存查询总数
- 16. 如何使用“IN”运算符缓存数据库查询?
- 17. 智能(?)数据库缓存
- 18. H2数据库能够使用Aggregate函数对over子句进行SQL查询吗?
- 19. 使用HibernateTemplate进行HQL查询(Spring)
- 20. 在Spring中使用数组参数的方法进行缓存
- 21. C#如何将MDB数据库读入内存并查询它?
- 22. RavenDB用空数据库缓慢查询
- 23. CakePHP - 将缓存存储在数据库中并使用它与Javascript
- 24. 数据库连接并执行查询
- 25. 贮藏用户ID和其他数据,并使用它来查询数据库
- 26. 查询数据库时如何避免数据缓存?
- 27. 缓存并发查询
- 28. Spring Data JPA - 使用ElementCollection进行查询 - 性能低下
- 29. Spring + Hibernate:查询计划缓存内存使用情况
- 30. 从SQL数据库缓存数据进行排序
我在我的数据库中有几个参数,我需要一起查询,所以简单的地图是不够的。我确实看过EHCache,但并不完全确定它是否完全符合我的需求。如果有人有经验,请告诉我它是否适合我。 –
很多企业使用ehcache。所以如果你有任何疑问,你是否可以安全地使用它;放心,这是非常好的。我自己成功地在更大的应用程序中使用了ehcache和ehcache web。去吧。 ehcache网站有很多您可以使用的信息。 – pravat