如何在Spring中使用多个动态缓存(spring,开发技术)

时间:2024-05-10 10:12:30 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    %E5%A6%82%E4%BD%95%E5%9C%A8Spring%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%A4%9A%E4%B8%AA%E5%8A%A8%E6%80%81%E7%BC%93%E5%AD%98

CompositeCacheManager从理论上讲,Spring应该允许使用多个缓存管理器。它的工作原理是询问底层缓存管理器是否有具有请求名称的缓存。问题在于当您需要基于某些全局配置动态创建的缓存时。这是常见的情况,当您不想手动定义缓存,而只想添加@Cacheable并让 spring(和底层缓存管理器)使用一些合理的默认值为您创建缓存时。

这很好,直到您需要拥有多个缓存管理器。例如 : 一个用于本地缓存,一个用于分布式缓存。在许多情况下,需要分布式缓存;然而,并非所有方法调用都需要分布式——有些方法调用可以是处理它的实例的本地调用,并且您不想用可以保存在本地的东西来加重分布式缓存的负担。您是否可以配置分布式缓存提供程序以将某些缓存指定为本地缓存,即使它是由分布式缓存提供程序处理的——也许,但我不保证这会很简单。

因此,面对这个问题,我不得不设计一些简单的机制,将一些缓存指定为“分布式”,将一些指定为“本地”。CompositeCacheManager单独使用不会这样做,所以我扩展了分布式缓存管理器(在本例中为 Hazelcast,但它可以通过任何提供程序完成):

以及对应的复合缓存管理器配置:

这基本上意味着名称以d:(“distributed”)开头的任何缓存都应该由分布式缓存管理器处理。否则,继续下一个缓存管理器(在本例中为Caffeine)。所以当你想定义一个带有可缓存结果的方法时,你必须决定它是@Cacheable("d:cachename")还是只是@Cacheable("cachename")

这可能是解决该问题的众多方法之一,但我喜欢它的简单性。缓存很难(分布式缓存更是如此),虽然我们很幸运有 Spring 抽象了大部分内容,但有时我们必须自己处理特殊情况。

本文:如何在Spring中使用多个动态缓存的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:怎么使用Hibernate在Java中批量更新或插入数据库表下一篇:

5 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18