- Spring boot Caffeine缓存(一)——CacheManager与配置文件
- Spring boot Caffeine缓存(二)——Cache、LoadingCache
- Spring boot Caffeine缓存(三)——使用注解
前边文章主要介绍了下Caffeine以及CacheManager,这里说下Caffeine的Cache和LoadingCache的配置及用法。
Cache
先来看下Cache的接口代码
@ThreadSafe
public interface Cache<K, V> {
/**
* 从cache中获取值,如果没有直接返回null
*/
@Nullable
V getIfPresent(@Nonnull Object key);
/**
* 从cache中获取值,如果没有则通过给出的Function来加载值
* 如果Function返回的值不为null会被放到缓存中,这个跟后边要讲到的CacheLoad很像
*/
@Nullable
V get(@Nonnull K key, @Nonnull Function<? super K, ? extends V> mappingFunction);
/**
* 按照给定的key返回一个map类型的集合
*/
@Nonnull
Map<K, V> getAllPresent(@Nonnull Iterable<?> keys);
/**
* 存值
*/
void put(@Nonnull K key, @Nonnull V value);
/**
* 批量存放
*/
void putAll(@Nonnull Map<? extends K,? extends V> map);
/**
* 将一个key值从缓存中清除,在方法级别有个@CacheEvict注解,其中有个evict,evict的实现也是调用的invalidate,他们最底层的实现是remove
*/
void invalidate(@Nonnull Object key);
void invalidateAll(@Nonnull Iterable<?> keys);
void invalidateAll();
/**
* 获取当前缓存中的大概存放值,这个数字不一定准确,因为它可能会包含已经过期/失效的值
*/
@Nonnegative
long estimatedSize();
/**
* 当前缓存的一些记录,这块需要自己看下具体值才能了解,下边争取列出来这块
*/
@Nonnull
CacheStats stats();
/**
* 将集合转换为一个ConcurrentMap
*/
@Nonnull
ConcurrentMap<K, V> asMap();
/**
* 清除缓存中一些过期的值
*/
void cleanUp();
/**
* 设定策略,这个后边我尽量也给列出来一块吧(如果记得)
*/
@Nonnull
Policy<K, V&g