Interface Cache<K,V>

Type Parameters:
K - 键类型
V - 值类型
All Superinterfaces:
Iterable<V>, Serializable
All Known Implementing Classes:
AbstractCache, FIFOCache, LFUCache, LRUCache, NoCache, ReentrantCache, StampedCache, TimedCache, WeakCache

public interface Cache<K,V> extends Iterable<V>, Serializable
缓存接口
Since:
Java 17+
Author:
Kimi Liu
  • Method Summary

    Modifier and Type
    Method
    Description
    返回包含键和值得迭代器
    int
    返回缓存容量,0表示无大小限制
    void
    清空缓存
    boolean
    是否包含key
    default V
    get(K key)
    从缓存中获得对象,当对象不在缓存中或已经过期返回null
    get(K key, boolean isUpdateLastAccess)
    从缓存中获得对象,当对象不在缓存中或已经过期返回null
    get(K key, boolean isUpdateLastAccess, long timeout, SupplierX<V> supplier)
    从缓存中获得对象,当对象不在缓存中或已经过期返回SerSupplier回调产生的对象
    get(K key, boolean isUpdateLastAccess, SupplierX<V> supplier)
    从缓存中获得对象,当对象不在缓存中或已经过期返回SerSupplier回调产生的对象
    default V
    get(K key, SupplierX<V> supplier)
    从缓存中获得对象,当对象不在缓存中或已经过期返回SerSupplier回调产生的对象
    boolean
    缓存是否为空
    boolean
    缓存是否已满,仅用于有空间限制的缓存对象
    int
    从缓存中清理过期对象,清理策略取决于具体实现
    void
    put(K key, V object)
    将对象加入到缓存,使用默认失效时长
    void
    put(K key, V object, long timeout)
    将对象加入到缓存,使用指定失效时长 如果缓存空间满了,prune() 将被调用以获得空间来存放新对象
    void
    remove(K key)
    从缓存中移除对象
    default Cache<K,V>
    设置监听
    int
    缓存的对象数量
    long
    缓存失效时长, 0 表示没有设置,单位毫秒

    Methods inherited from interface java.lang.Iterable

    forEach, iterator, spliterator
  • Method Details

    • capacity

      int capacity()
      返回缓存容量,0表示无大小限制
      Returns:
      返回缓存容量,0表示无大小限制
    • timeout

      long timeout()
      缓存失效时长, 0 表示没有设置,单位毫秒
      Returns:
      缓存失效时长, 0 表示没有设置,单位毫秒
    • put

      void put(K key, V object)
      将对象加入到缓存,使用默认失效时长
      Parameters:
      key - 键
      object - 缓存的对象
      See Also:
    • put

      void put(K key, V object, long timeout)
      将对象加入到缓存,使用指定失效时长 如果缓存空间满了,prune() 将被调用以获得空间来存放新对象
      Parameters:
      key - 键
      object - 缓存的对象
      timeout - 失效时长,单位毫秒
    • get

      default V get(K key)
      从缓存中获得对象,当对象不在缓存中或已经过期返回null

      调用此方法时,会检查上次调用时间,如果与当前时间差值大于超时时间返回null,否则返回值。

      每次调用此方法会刷新最后访问时间,也就是说会重新计算超时时间。

      Parameters:
      key - 键
      Returns:
      键对应的对象
      See Also:
    • get

      default V get(K key, SupplierX<V> supplier)
      从缓存中获得对象,当对象不在缓存中或已经过期返回SerSupplier回调产生的对象

      调用此方法时,会检查上次调用时间,如果与当前时间差值大于超时时间返回null,否则返回值。

      每次调用此方法会刷新最后访问时间,也就是说会重新计算超时时间。

      Parameters:
      key - 键
      supplier - 如果不存在回调方法,用于生产值对象
      Returns:
      值对象
    • get

      V get(K key, boolean isUpdateLastAccess, SupplierX<V> supplier)
      从缓存中获得对象,当对象不在缓存中或已经过期返回SerSupplier回调产生的对象

      调用此方法时,会检查上次调用时间,如果与当前时间差值大于超时时间返回null,否则返回值。

      每次调用此方法会可选是否刷新最后访问时间,true表示会重新计算超时时间。

      Parameters:
      key - 键
      isUpdateLastAccess - 是否更新最后访问时间,即重新计算超时时间。
      supplier - 如果不存在回调方法,用于生产值对象
      Returns:
      值对象
    • get

      V get(K key, boolean isUpdateLastAccess, long timeout, SupplierX<V> supplier)
      从缓存中获得对象,当对象不在缓存中或已经过期返回SerSupplier回调产生的对象

      调用此方法时,会检查上次调用时间,如果与当前时间差值大于超时时间返回null,否则返回值。

      每次调用此方法会可选是否刷新最后访问时间,true表示会重新计算超时时间。

      Parameters:
      key - 键
      isUpdateLastAccess - 是否更新最后访问时间,即重新计算超时时间。
      timeout - 自定义超时时间
      supplier - 如果不存在回调方法,用于生产值对象
      Returns:
      值对象
    • get

      V get(K key, boolean isUpdateLastAccess)
      从缓存中获得对象,当对象不在缓存中或已经过期返回null

      调用此方法时,会检查上次调用时间,如果与当前时间差值大于超时时间返回null,否则返回值。

      每次调用此方法会可选是否刷新最后访问时间,true表示会重新计算超时时间。

      Parameters:
      key - 键
      isUpdateLastAccess - 是否更新最后访问时间,即重新计算超时时间。
      Returns:
      键对应的对象
    • cacheObjIterator

      Iterator<CacheObject<K,V>> cacheObjIterator()
      返回包含键和值得迭代器
      Returns:
      缓存对象迭代器
    • prune

      int prune()
      从缓存中清理过期对象,清理策略取决于具体实现
      Returns:
      清理的缓存对象个数
    • isFull

      boolean isFull()
      缓存是否已满,仅用于有空间限制的缓存对象
      Returns:
      缓存是否已满,仅用于有空间限制的缓存对象
    • remove

      void remove(K key)
      从缓存中移除对象
      Parameters:
      key - 键
    • clear

      void clear()
      清空缓存
    • size

      int size()
      缓存的对象数量
      Returns:
      缓存的对象数量
    • isEmpty

      boolean isEmpty()
      缓存是否为空
      Returns:
      缓存是否为空
    • containsKey

      boolean containsKey(K key)
      是否包含key
      Parameters:
      key - KEY
      Returns:
      是否包含key
    • setListener

      default Cache<K,V> setListener(CacheListener<K,V> listener)
      设置监听
      Parameters:
      listener - 监听
      Returns:
      this