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

Java新手使用Cache API最佳方案:报错排查及无需指定端口的缓存选型

报错原因

你遇到的端口连接拒绝报错,是因为项目Classpath下当前默认加载的JCache实现为Hazelcast,该实现默认以集群模式运行,启动时会尝试连接本地的Hazelcast节点服务,你本地未启动对应服务才会抛出该异常。

常见无独立服务的Java缓存方案

Java生态有大量进程内缓存实现,不需要单独部署服务、不需要开放端口,仅作为Jar包引入即可使用,和是否使用Spring没有任何关联,以下是两种最常用的兼容JCache规范的方案:

方案1:使用Caffeine作为JCache实现(性能最优,推荐)

Caffeine是目前Java领域性能表现最好的进程内缓存,完美兼容JCache规范,仅需两步即可适配你的现有代码:

  1. 在pom.xml中引入Caffeine的JCache适配依赖,同时删除现有Hazelcast相关的缓存依赖:
<dependency>
    <groupId>com.github.ben-manes.caffeine</groupId>
    <artifactId>caffeine-jcache</artifactId>
    <version>3.1.8</version>
</dependency>
  1. 你现有编写的JCache代码不需要做任何修改,直接运行即可,Caffeine会被JCache的SPI机制自动识别为实现类,所有缓存数据都存储在当前应用进程的内存中,不会发起任何外部网络连接。

方案2:使用Ehcache单机模式

如果你更倾向使用Ehcache,仅需调整依赖加简单配置即可:

  1. 在pom.xml中引入Ehcache核心依赖与JCache规范依赖,删除现有Hazelcast相关依赖:
<dependency>
    <groupId>org.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>3.10.8</version>
</dependency>
<dependency>
    <groupId>javax.cache</groupId>
    <artifactId>cache-api</artifactId>
    <version>1.1.1</version>
</dependency>
  1. 在项目的resources目录下新增ehcache.xml配置文件,指定单机缓存规则:
<config xmlns="http://www.ehcache.org/v3"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.0.xsd">
    <cache alias="jCache">
        <key-type>java.lang.Long</key-type>
        <value-type>java.lang.String</value-type>
        <expiry>
            <ttl unit="minutes">1</ttl>
        </expiry>
        <resources>
            <!-- 堆内存最多存储1000条缓存 -->
            <heap unit="entries">1000</heap>
        </resources>
    </cache>
</config>

调整后你的现有JCache代码即可正常运行,不需要额外启动任何服务。

注意事项

进程内缓存的生命周期和你的应用进程绑定,应用重启后缓存数据会自动清空,完全满足小型项目调用外部API提速的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:06:04