求支持元素级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
相关产品推荐
相关产品推荐

