Module bus.cache

Interface CacheX<K,V>

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 Type
    Method
    Description
    void
    清空缓存中的所有数据
    default boolean
    检查缓存中是否存在未过期的键
    read(Collection<K> keys)
    从缓存中批量读取多个对象
    read(K key)
    从缓存中读取单个对象
    void
    remove(K... keys)
    从缓存中移除指定键
    void
    write(Map<K,V> map, long expire)
    批量写入多个对象到缓存,指定过期时间
    default void
    write(K key, V value)
    将对象写入缓存,使用默认过期时间
    void
    write(K key, V value, long expire)
    将对象写入缓存,指定过期时间
  • Method Details

    • read

      V read(K key)
      从缓存中读取单个对象

      根据指定键获取缓存中的值。如果键不存在或值已过期,返回 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

      Map<K,V> read(Collection<K> keys)
      从缓存中批量读取多个对象

      根据指定键集合批量获取缓存中的值,返回包含键值对的映射。 不存在的键或已过期的值不会包含在返回的映射中。 示例代码:

      
       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

      default void write(K key, V value)
      将对象写入缓存,使用默认过期时间

      将键值对写入缓存,采用默认过期时间(1小时,3600秒)。 如果键已存在,更新其值并重置过期时间。 示例代码:

      
       CacheX<String, User> cache = new SomeCacheImpl<>();
       User user = new User("user123", "张三");
       cache.write(user.getId(), user);
       
      Parameters:
      key - 缓存键
      value - 缓存值
    • write

      void write(K key, V value, long expire)
      将对象写入缓存,指定过期时间

      将键值对写入缓存,并设置指定的过期时间(单位:毫秒)。 如果键已存在,更新其值并重置过期时间。 示例代码:

      
       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

      void write(Map<K,V> map, long expire)
      批量写入多个对象到缓存,指定过期时间

      将多个键值对批量写入缓存,设置相同的过期时间(单位:毫秒)。 对于已存在的键,更新其值并重置过期时间。 示例代码:

      
       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

      default boolean containsKey(K key)
      检查缓存中是否存在未过期的键

      判断缓存中是否存在指定键且对应的值未过期。 默认实现返回 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

      void remove(K... keys)
      从缓存中移除指定键

      移除一个或多个指定键的缓存数据。对于不存在的键,操作将忽略。 支持可变参数以移除多个键。 示例代码:

      
       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();