spring-boot-rest服务有太多mysql-db调用问题



我正在用spring-boot和mysql开发一个rest应用程序。目前我仍处于开发阶段,因此我还没有启用任何缓存。我未来随着负载的增加,我将使用memcached(因为我们已经为组织中的其他应用程序使用了memcached(或redis来缓存数据库查询的结果。现在我甚至还没有启用hibernate二级缓存,所以我看到了太多的数据库调用。我想启用缓存,最好是ehcache,以减少数据库调用。

我的是一个rest api,目前我们正在aws中的3个pod中运行它。

我应该启用哪种缓存(不是memcached或redis(

  1. 弹簧缓存(ehcache(
  2. 休眠二级缓存

我现在的主要目标是减少数据库调用的数量。

我应该只使用hibernate二级缓存还是spring缓存?

这是我的默认配置:

jpa:
open-in-view: false
properties:
hibernate.jdbc.time_zone: UTC
hibernate.id.new_generator_mappings: true
hibernate.connection.provider_disables_autocommit: true
hibernate.cache.use_second_level_cache: false
hibernate.cache.use_query_cache: true
hibernate.generate_statistics: false
# modify batch size as necessary
hibernate.jdbc.batch_size: 25
hibernate.order_inserts: true
hibernate.order_updates: true
hibernate.query.fail_on_pagination_over_collection_fetch: true
hibernate.query.in_clause_parameter_padding: true
hibernate.dialect: org.hibernate.dialect.MySQL5Dialect
spring.jpa.show-sql: true

根据您的需要,如果您想缓存一个经常被您的唯一标识符(EntityManager.find()(访问且很少编辑的实体,我认为它是L2C的一个很好的候选者
当我从其他长期服务调用或DB的投影构建响应时,我倾向于使用Spring Cache。

顺便说一下,您还需要一个L2C的实现(可以是EhCache(。

最新更新