- Type Parameters:
K- 键的类型V- 值的类型
- All Known Implementing Classes:
CaffeineCache,GuavaCache,MemcachedCache,MemoryCache,NoOpCache,RedisCache,RedisClusterCache
public interface CacheX<K,V>
缓存接口
定义缓存系统的核心操作,包括读取、写入、检查、移除和清空缓存。 支持泛型,适用于不同类型的键值对,可实现内存缓存、分布式缓存等多种缓存机制。
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Method Summary
Modifier and TypeMethodDescriptionvoidclear()清空缓存中的所有数据default booleancontainsKey(K key) 检查缓存中是否存在未过期的键read(Collection<K> keys) 从缓存中批量读取多个对象从缓存中读取单个对象void从缓存中移除指定键void批量写入多个对象到缓存,指定过期时间default void将对象写入缓存,使用默认过期时间void将对象写入缓存,指定过期时间
-
Method Details
-
read
从缓存中读取单个对象根据指定键获取缓存中的值。如果键不存在或值已过期,返回
null。 示例代码:CacheX<String, User> cache = new SomeCacheImpl<>(); User user = cache.read("user123"); if (user != null) { System.out.println("用户: " + user.getName()); }- Parameters:
key- 缓存键- Returns:
- 键对应的值,或
null如果键不存在或值已过期
-
read
从缓存中批量读取多个对象根据指定键集合批量获取缓存中的值,返回包含键值对的映射。 不存在的键或已过期的值不会包含在返回的映射中。 示例代码:
CacheX<String, User> cache = new SomeCacheImpl<>(); List<String> userIds = Arrays.asList("user123", "user456"); Map<String, User> users = cache.read(userIds); users.forEach((id, user) -> System.out.println("ID: " + id + ", 名称: " + user.getName()));- Parameters:
keys- 键的集合- Returns:
- 包含键及其对应值的映射,可能为空
-
write
将对象写入缓存,使用默认过期时间将键值对写入缓存,采用默认过期时间(1小时,3600秒)。 如果键已存在,更新其值并重置过期时间。 示例代码:
CacheX<String, User> cache = new SomeCacheImpl<>(); User user = new User("user123", "张三"); cache.write(user.getId(), user);- Parameters:
key- 缓存键value- 缓存值
-
write
将对象写入缓存,指定过期时间将键值对写入缓存,并设置指定的过期时间(单位:毫秒)。 如果键已存在,更新其值并重置过期时间。 示例代码:
CacheX<String, User> cache = new SomeCacheImpl<>(); User user = new User("user123", "张三"); cache.write(user.getId(), user, 30 * 60 * 1000); // 30分钟- Parameters:
key- 缓存键value- 缓存值expire- 过期时间(毫秒)
-
write
批量写入多个对象到缓存,指定过期时间将多个键值对批量写入缓存,设置相同的过期时间(单位:毫秒)。 对于已存在的键,更新其值并重置过期时间。 示例代码:
CacheX<String, User> cache = new SomeCacheImpl<>(); Map<String, User> userMap = new HashMap<>(); userMap.put("user123", new User("user123", "张三")); userMap.put("user456", new User("user456", "李四")); cache.write(userMap, 60 * 60 * 1000); // 1小时- Parameters:
map- 包含键值对的映射expire- 过期时间(毫秒)
-
containsKey
检查缓存中是否存在未过期的键判断缓存中是否存在指定键且对应的值未过期。 默认实现返回
true,实现类应重写以提供具体逻辑。 示例代码:CacheX<String, User> cache = new SomeCacheImpl<>(); String userId = "user123"; if (cache.containsKey(userId)) { User user = cache.read(userId); System.out.println("缓存命中: " + user.getName()); }- Parameters:
key- 缓存键- Returns:
true如果键存在且值未过期;否则返回false
-
remove
从缓存中移除指定键移除一个或多个指定键的缓存数据。对于不存在的键,操作将忽略。 支持可变参数以移除多个键。 示例代码:
CacheX<String, User> cache = new SomeCacheImpl<>(); cache.remove("user123"); cache.remove("user456", "user789");- Parameters:
keys- 要移除的键
-
clear
void clear()清空缓存中的所有数据移除缓存中的所有键值对,使缓存变为空。 示例代码:
CacheX<String, User> cache = new SomeCacheImpl<>(); cache.clear();
-