CacheManager的用法

本文介绍了EHCache中CacheManager的创建方法、Cache配置文件的加载方式、如何增加或删除Cache及关闭CacheManager等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 CacheManager 对象的创建方式  

(1)Create a singleton CacheManager using defaults, then list caches.

CacheManager.create();

String[] cacheNames = CacheManager.getInstance().getCacheNames();

(2)Create a CacheManager instance using defaults, then list caches.

                CacheManager manager = new CacheManager();

               String[] cacheNames = manager.getCacheNames();

(3)Create two CacheManagers, each with a different configuration, and list the caches in each.

               CacheManager manager1 = new CacheManager("src/config/ehcache1.xml");

               CacheManager manager2 = new CacheManager("src/config/ehcache2.xml");

               String[] cacheNamesForManager1 = manager1.getCacheNames();

               String[] cacheNamesForManager2 = manager2.getCacheNames();

 

2 Cache 配置文件的加载方式

       CacheManager 的构造函数如下:

      

    (1) 无参

CacheManager manager = new CacheManager();

(2) 通过配置文件

CacheManager manager = new CacheManager("src/config/ehcache.xml");

    (3) 通过资源

URL url = getClass().getResource("/anotherconfigurationname.xml");

CacheManager manager = new CacheManager(url);

(4) 通过输入流

InputStream fis = new FileInputStream(new File("src/config/ehcache.xml").getAbsolutePath());

try {

             CacheManager manager = new CacheManager(fis);

} finally {

           fis.close();

}

 

3 、增加或删除 Cache

        增加 Cache 有两种方式:

       (1) 使用 CacheManager addCache(String)

CacheManager singletonManager = CacheManager.create();

singletonManager.addCache("testCache");

Cache test = singletonManager.getCache("testCache");

       (2) 新增一个 Cache ,然后加到 CacheManager 中, Cache 在加入 CacheManager 之前是不能使用的

           CacheManager singletonManager = CacheManager.create();

Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2);

manager.addCache(memoryOnlyCache);

Cache test = singletonManager.getCache("testCache");

       CachaManager 中删除 Cache

           CacheManager singletonManager = CacheManager.create();

singletonManager.removeCache("sampleCache1");

 

4 、关闭 CacheManager

    CacheManager 在使用之后应该关闭,虽然有自己的 shutdown hook ,建议在程序中手动关闭。

        CacheManager.getInstance().shutdown();

 

### JetCache CacheManager 使用方法 #### 配置 `CacheManager` `CacheManager` 是管理缓存的核心组件之一。为了初始化并使用 `CacheManager`,通常会在配置类中完成这一工作。 ```java @Configuration public class JetcacheConfig { @Autowired private CacheManager cacheManager; private Cache<Long, Object> userCache; @PostConstruct public void init() { QuickConfig qc = QuickConfig.newBuilder("userCache:") .expire(Duration.ofSeconds(3600)) .cacheType(CacheType.BOTH) .syncLocal(false) .build(); userCache = cacheManager.getOrCreateCache(qc); } @Bean public Cache<Long, Object> getUserCache() { return userCache; } } ``` 这段代码展示了如何创建一个名为 `userCache:` 的缓存,并设置其过期时间为 3600 秒,同时指定了该缓存为本地与远程双层结构[^3]。 #### 获取或创建缓存实例 通过 `getOrCreateCache()` 方法可以从已有的缓存列表中查找指定名称的缓存对象;如果不存在,则会按照给定的配置新建一个缓存实例。此过程利用了 `QuickConfig` 来简化配置项的设定。 #### 设置缓存策略 对于每种类型的缓存(如 Caffeine 或 Redis),可以通过相应的构建器来定制化具体的存储行为,比如生存周期、同步机制等。这些选项有助于优化应用性能以及适应特定的应用场景需求。 --- ### 常见问题解决方案 #### 超时时间不生效 当遇到超时时间不起作用的情况时,需确认以下几点: - 是否在具体的操作方法上设置了超时参数; - 如果没有显式设置,则应检查 `Cache` 实例本身的默认超时值是否已被正确定义; - 若上述均无异常但仍存在问题,建议核查全局配置文件中的相应条目是否存在冲突或错误[^4]。 #### 缓存穿透现象 针对频繁访问却始终为空的数据请求所引发的数据库压力增大问题——即所谓的“缓存穿透”,可采取如下措施加以防范: - 对于可能存在的热点查询,预先加载至缓存内以减少直接读库次数; - 设计合理的键值校验逻辑,防止恶意构造非法输入造成绕过验证而直击底层资源; - 应用布隆过滤器或其他相似技术手段辅助判断目标记录的存在性再决定是否发起实际检索动作。 #### 多级缓存一致性维护 由于采用了多级架构设计,因此需要特别关注各级之间的一致性和协调性。特别是当更新操作发生后,应当确保所有涉及的相关节点都能及时感知变化并作出响应。这可通过调整 `.syncLocal(true)` 参数实现强制同步刷新,从而保障整个系统的稳定运行状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值