【JAVA】基于Guava实现本地缓存

使用Guava实现本地缓存

1、首先,导入pom依赖

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>30.1-jre</version>
        </dependency>

2、创建一个本地缓存的接口 LocalCacheService,用于定义缓存方法

public interface LocalCacheService<K, V> {

    /**
     * 存储数据
     *
     * @param key
     * @param value
     */
    void put(K key, V value);

    /**
     * 如果存在就获取
     *
     * @param key
     * @return
     */

    V getIfPresent(Object key);

    /**
     * 删除数据
     *
     * @param key
     */

    void delete(Object key);
}

3、之后创建缓存工厂 LocalCacheFactory ,方便拓展(也可以直接创建实现类 看自己需要)

public class LocalCacheFactory {

    /**
     * 获取本地缓存数据
     * @return
     * @param  key
     * @param  value
     */
    public static <K, V> Cache<K, V> getLocalCache(){
       //这里的初始容量、过期时间、过期单位 也可以通过传参数的形式(或者再写几个有入参的方法),更具使用化场景
        return CacheBuilder.newBuilder().initialCapacity(20).concurrencyLevel(5).expireAfterWrite(10, TimeUnit.SECONDS).build();
    }
}

4、创建本地缓存接口的实现类

@Service
public class GuavaLocalCacheService<K, V> implements LocalCacheService<K, V> {
   
    //从工厂获取缓存对象
    private final Cache<K, V> cache = LocalCacheFactory.getLocalCache();

    @Override
    public void put(K key, V value) {
        cache.put(key, value);
    }

    @Override
    public V getIfPresent(Object key) {
        return cache.getIfPresent(key);
    }

    @Override
    public void delete(Object key) {
        cache.invalidate(key);
    }
}

好的,基于上面几步,本地缓存工具类已经可以使用了~

你可能感兴趣的:(java,guava,缓存)