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

求支持元素级TTL的Java开源内存缓存库(Ehcache 3.x不支持)

支持单个缓存项自定义TTL的Java开源缓存库

以下几个Java开源缓存库支持为单个缓存条目设置自定义TTL,满足你需要的put(key, value, timeToLive)和put(key, value)接口需求:

1. Caffeine

Caffeine是高性能的Java本地缓存库,API简洁直观,完全支持单个条目自定义过期时间。

示例代码:

// 初始化缓存,可按需设置默认过期规则(可选)
Cache<String, String> cache = Caffeine.newBuilder()
        .build();

// 添加无TTL的键值对
cache.put("key1", "value1");

// 添加带指定TTL的键值对(设置100秒后过期)
cache.put("key2", "value2", Expiration.after(100, TimeUnit.SECONDS));

2. Guava Cache

Guava Cache是Google Guava库中的缓存实现,支持为单个条目独立设置过期时间。

示例代码:

// 初始化缓存,可配置默认规则,也可使用普通Cache替代LoadingCache
LoadingCache<String, String> cache = CacheBuilder.newBuilder()
        .build(new CacheLoader<String, String>() {
            @Override
            public String load(String key) throws Exception {
                // 缓存未命中时的加载逻辑,按需实现
                return "";
            }
        });

// 添加无TTL的键值对
cache.put("key1", "value1");

// 添加带指定TTL的键值对(设置100秒后过期)
cache.put("key2", "value2");
cache.expireAfterWrite("key2", 100, TimeUnit.SECONDS);

3. Redis客户端(如Jedis)

如果需要分布式缓存场景,Redis的Java客户端(如Jedis)支持为单个键独立设置过期时间,完全匹配需求。

示例代码:

Jedis jedis = new Jedis("localhost");

// 添加无TTL的键值对
jedis.set("key1", "value1");

// 添加带指定TTL的键值对(设置100秒后过期)
jedis.setex("key2", 100, "value2");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:42:40