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

简介: 【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 <K> key
     * @param <V> 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);
    }
}

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

相关文章
|
2月前
|
缓存 JavaScript 前端开发
Java 如何确保 JS 不被缓存
【10月更文挑战第19天】在 Java 中,可以通过设置 HTTP 响应头来确保 JavaScript 文件不被浏览器缓存。方法包括:1. 使用 Servlet 设置响应头,通过 `doGet` 方法设置 `Expires`、`Cache-Control` 和 `Pragma` 头;2. 在 Spring Boot 中配置拦截器,通过 `NoCacheInterceptor` 类和 `WebConfig` 配置类实现相同功能。这两种方法都能确保每次请求都能获取到最新的 JavaScript 内容。
|
4月前
|
缓存 Java Maven
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
|
4月前
|
缓存 Java Spring
Java本地高性能缓存实践问题之Caffeine中设置刷新机制的问题如何解决
Java本地高性能缓存实践问题之Caffeine中设置刷新机制的问题如何解决
108 1
|
4月前
|
存储 缓存 Java
Java本地高性能缓存实践问题之如何定义Caffeine的缓存
Java本地高性能缓存实践问题之如何定义Caffeine的缓存
|
4月前
|
缓存 Java
Java本地高性能缓存实践问题之Caffeine缓存库中基于时间设置驱逐策略的问题如何解决
Java本地高性能缓存实践问题之Caffeine缓存库中基于时间设置驱逐策略的问题如何解决
|
4月前
|
缓存 Java
Java本地高性能缓存实践问题之AsyncCache中移除一个缓存元素的问题如何解决
Java本地高性能缓存实践问题之AsyncCache中移除一个缓存元素的问题如何解决
|
4月前
|
缓存 Java
Java本地高性能缓存实践问题之使用Caffeine的Cache接口来查找一个缓存元素的问题如何解决
Java本地高性能缓存实践问题之使用Caffeine的Cache接口来查找一个缓存元素的问题如何解决
|
2月前
|
缓存 JavaScript 前端开发
Java 如何确保 JS 不被缓存
大家好,我是 V 哥。本文探讨了 Java 后端确保 JavaScript 不被缓存的问题,分析了文件更新后无法生效、前后端不一致、影响调试与开发及安全问题等场景,并提供了使用版本号、设置 HTTP 响应头、配置静态资源缓存策略和使用 ETag 等解决方案。最后讨论了缓存的合理使用及其平衡方法。
100 0
消息中间件 缓存 监控
140 0
|
4月前
|
Java 数据库
震惊!Guava Throwables 类如魔法棒般神奇,让 Java 异常处理华丽变身!
【8月更文挑战第29天】在 Java 开发中,异常处理至关重要,而 Guava 库中的 `Throwables` 类则提供了强大的异常处理工具。它包含了一系列静态方法,如 `propagateIfInstanceOf` 和 `propagateIfPossible`,可以帮助我们有条件地传播异常。此外,`getRootCause` 方法可以深入分析异常的根本原因,有助于快速定位问题所在。无论是构建大型分布式系统还是电商平台,`Throwables` 类都能显著提升异常处理的效率和准确性,使我们的程序更加稳定和可靠。
50 1