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

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

相关文章
|
5天前
|
缓存 安全 算法
Java面试题:如何通过JVM参数调整GC行为以优化应用性能?如何使用synchronized和volatile关键字解决并发问题?如何使用ConcurrentHashMap实现线程安全的缓存?
Java面试题:如何通过JVM参数调整GC行为以优化应用性能?如何使用synchronized和volatile关键字解决并发问题?如何使用ConcurrentHashMap实现线程安全的缓存?
8 0
|
6天前
|
缓存 算法 NoSQL
Java中的分布式缓存与一致性哈希算法
Java中的分布式缓存与一致性哈希算法
|
10天前
|
缓存 NoSQL Java
实现Java应用的智能缓存管理策略
实现Java应用的智能缓存管理策略
|
10天前
|
存储 缓存 NoSQL
Java中的内存数据库与缓存技术
Java中的内存数据库与缓存技术
|
13天前
|
缓存 NoSQL Java
如何在Java中实现分布式缓存?
如何在Java中实现分布式缓存?
|
14天前
|
存储 缓存 Java
Java中缓存实现的最佳实践
Java中缓存实现的最佳实践
|
5天前
|
存储 缓存 算法
Java面试题:给出代码优化的常见策略,如减少对象创建、使用缓存等。
Java面试题:给出代码优化的常见策略,如减少对象创建、使用缓存等。
6 0
|
5天前
|
设计模式 存储 缓存
Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
8 0
|
5天前
|
设计模式 存储 缓存
Java面试题:结合单例模式与Java内存模型,设计一个线程安全的单例类?使用内存屏障与Java并发工具类,实现一个高效的并发缓存系统?结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
Java面试题:结合单例模式与Java内存模型,设计一个线程安全的单例类?使用内存屏障与Java并发工具类,实现一个高效的并发缓存系统?结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
10 0
|
28天前
|
缓存 监控 负载均衡
Java一分钟之-Ehcache:分布式缓存系统
【6月更文挑战第17天】**Ehcache是Java的开源缓存库,支持本地和分布式缓存,提供负载均衡、数据复制和容错能力。常见问题包括网络分区导致的数据不一致、缓存雪崩和配置不当引起的性能瓶颈。解决策略涉及选择强一致性策略、设置合理缓存过期时间和监控调整配置。使用Ehcache需添加相关依赖,并配置分布式缓存,如示例所示,通过CacheManager创建和管理缓存。实践中,持续监控和优化配置至关重要。**
37 1