Database @Cacheable会使用共享数据库加速应用程序吗?

Database @Cacheable会使用共享数据库加速应用程序吗?,database,spring,caching,ehcache,Database,Spring,Caching,Ehcache,我正在使用Spring boot编写一个服务器端应用程序,比如说app1。此app1访问专用数据库服务器上的数据库db1。为了加快数据库访问速度,我将我的一些JPARepository标记为@Cacheable(因此,这里有很多问题 通过在我的应用程序中使用缓存,我的应用程序1会获得性能提升吗 应用程序(@Cacheable) 您应该始终对其进行基准测试,但从理论上讲,访问缓存将比访问数据库更快 如果另一个应用程序app2修改了一个DB条目,缓存将如何运行 在app1内部知道条目已更新吗?然后我

我正在使用Spring boot编写一个服务器端应用程序,比如说
app1
。此
app1
访问专用数据库服务器上的数据库
db1
。为了加快数据库访问速度,我将我的一些JPARepository标记为
@Cacheable(因此,这里有很多问题

通过在我的应用程序中使用缓存,我的应用程序1会获得性能提升吗 应用程序(@Cacheable)

您应该始终对其进行基准测试,但从理论上讲,访问缓存将比访问数据库更快

如果另一个应用程序app2修改了一个DB条目,缓存将如何运行 在app1内部知道条目已更新吗?然后我的app1的缓存消失了 过时了,不是吗?(直到固定1小时后开始刷新) 刷新周期)

除非您使用集群缓存,否则它不会被更新。使用Terracotta集群的Ehcache就是这样的缓存。但是,如果您坚持使用基本的应用程序缓存,它会过时

如果#1是正确的,那么它是否意味着正确的设置方式 缓存应该使用某种缓存管理器屏蔽整个数据库。是吗 Redis用于这种用途

现在它变得微妙了。我不是Redis专家。但据我所知,Redis经常被用作缓存,但实际上它是一个NoSQL数据库。而且它不会在前面(就我所知),它将被放在一边。因此,您将首先查询Redis,查看您的数据是否在那里,然后再查询您的数据库。如果您的数据库访问速度慢得多,并且您的缓存命中率非常高,这将提高您的性能。但请做一个基准测试


真实缓存(如Ehcache)效率更高。它们添加了近缓存的概念。因此,您的应用程序将在内存中保留缓存项,但也会在缓存服务器上保留缓存项。如果更新了缓存项,则近缓存将被更新。这样,您可以获得应用程序缓存性能,但也可以获得服务器之间的一致性。

我检查了群集缓存的概念:。因此,看起来我应该设置ca在所有应用程序中使用相同的数据库(并且应该向相同的缓存群集管理器报告),以避免过时的缓存。