You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hazelcast 5.1.5集成Spring @Cacheable报错:找不到指定缓存

问题排查与解决方案

问题原因分析

你遇到的Cannot find cache named 'cache_name'异常,核心原因有两点:

  1. 配置中同时定义了Hazelcast服务端的Config Bean和客户端的HazelcastInstance Bean,但Spring Cache未正确关联到客户端实例;
  2. 服务端配置里的MapConfig是给本地服务端节点用的,而你实际通过客户端连接远程集群,远程集群中可能不存在cache_name对应的Map,或者Spring Cache无法通过客户端实例定位到它。

修正后的配置代码

@Configuration
@EnableCaching // 必须添加此注解开启Spring缓存功能
public class HazelcastConfig implements Serializable {

    @Value("${spring.application.name}")
    private String appName;

    @Bean
    public HazelcastInstance hazelcastInstance() {
        return HazelcastClient.newHazelcastClient(createClientConfig());
    }

    private ClientConfig createClientConfig() {
        ClientConfig clientConfig = new ClientConfig();
        clientConfig.setClusterName("hazelcast_mwga_cluster");
        clientConfig.setInstanceName("hazelcast_mwga_cluster");
        
        // 为指定缓存配置近缓存
        clientConfig.addNearCacheConfig(createNearCacheConfig("cache_name"));
        return clientConfig;
    }

    private NearCacheConfig createNearCacheConfig(String cacheName) {
        NearCacheConfig nearCacheConfig = new NearCacheConfig(cacheName);
        nearCacheConfig.setInvalidateOnChange(true);
        nearCacheConfig.setInMemoryFormat(InMemoryFormat.OBJECT);
        nearCacheConfig.setEvictionConfig(new EvictionConfig());
        return nearCacheConfig;
    }

    // 关键:绑定Hazelcast客户端实例到Spring CacheManager
    @Bean
    public CacheManager cacheManager(HazelcastInstance hazelcastInstance) {
        return new HazelcastCacheManager(hazelcastInstance);
    }
}

关键调整说明

  • 移除原有Config Bean:你使用客户端连接远程集群,这个服务端配置Bean无实际作用,反而会造成混淆;
  • 添加@EnableCaching注解:开启Spring缓存自动配置,这是容易被忽略的核心步骤;
  • 显式配置HazelcastCacheManager:将Spring Cache与Hazelcast客户端实例绑定,确保能正确识别集群中的缓存;
  • 调整近缓存配置:客户端的近缓存需在ClientConfig中定义,而非服务端的MapConfig。

额外验证步骤

  1. 确认远程Hazelcast集群节点正常运行,且集群名称与客户端配置的hazelcast_mwga_cluster一致;
  2. 检查客户端连接日志,确认成功连接到集群;
  3. 如果集群未提前创建cache_name的Map,确保集群允许动态创建Map(Hazelcast默认允许,若集群配置了禁用动态创建,则需提前在集群节点的配置中添加对应的MapConfig)。

内容的提问来源于stack exchange,提问作者DaniyalVaghar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 23:06:17