【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);
    }
}

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

相关文章
|
缓存 JavaScript 前端开发
Java 如何确保 JS 不被缓存
【10月更文挑战第19天】在 Java 中,可以通过设置 HTTP 响应头来确保 JavaScript 文件不被浏览器缓存。方法包括:1. 使用 Servlet 设置响应头,通过 `doGet` 方法设置 `Expires`、`Cache-Control` 和 `Pragma` 头;2. 在 Spring Boot 中配置拦截器,通过 `NoCacheInterceptor` 类和 `WebConfig` 配置类实现相同功能。这两种方法都能确保每次请求都能获取到最新的 JavaScript 内容。
173 1
|
缓存 Java Maven
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
704 1
|
缓存 Java Spring
Java本地高性能缓存实践问题之Caffeine中设置刷新机制的问题如何解决
Java本地高性能缓存实践问题之Caffeine中设置刷新机制的问题如何解决
658 1
|
存储 缓存 Java
Java本地高性能缓存实践问题之如何定义Caffeine的缓存
Java本地高性能缓存实践问题之如何定义Caffeine的缓存
205 0
|
缓存 Java
Java本地高性能缓存实践问题之Caffeine缓存库中基于时间设置驱逐策略的问题如何解决
Java本地高性能缓存实践问题之Caffeine缓存库中基于时间设置驱逐策略的问题如何解决
276 0
|
缓存 Java
Java本地高性能缓存实践问题之AsyncCache中移除一个缓存元素的问题如何解决
Java本地高性能缓存实践问题之AsyncCache中移除一个缓存元素的问题如何解决
229 0
|
缓存 Java
Java本地高性能缓存实践问题之使用Caffeine的Cache接口来查找一个缓存元素的问题如何解决
Java本地高性能缓存实践问题之使用Caffeine的Cache接口来查找一个缓存元素的问题如何解决
328 0
|
存储 缓存 Java
Java中的分布式缓存与Memcached集成实战
通过在Java项目中集成Memcached,可以显著提升系统的性能和响应速度。合理的缓存策略、分布式架构设计和异常处理机制是实现高效缓存的关键。希望本文提供的实战示例和优化建议能够帮助开发者更好地应用Memcached,实现高性能的分布式缓存解决方案。
251 9
|
消息中间件 缓存 监控
【Java笔记+踩坑】SpringBoot基础3——开发。热部署+配置高级+整合NoSQL/缓存/任务/邮件/监控
springboot的热部署、配置的宽松绑定和校验、任务、邮件、监控、springboot整合JdbcTemplate,h2等sql技术、整合redis,mongodb,es等nosql技术、整合redis,Memcached,jetcache,j2cache等缓存技术、整合ActiveMQ,RabbitMQ,RocketMQ,Kafka等消息的中间件的入门、整合缓存/任务/邮件/监控
【Java笔记+踩坑】SpringBoot基础3——开发。热部署+配置高级+整合NoSQL/缓存/任务/邮件/监控
|
缓存 NoSQL Java
【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
245 5