首页 > 其他分享 >SpringBoot2 缓存之王caffeine

SpringBoot2 缓存之王caffeine

时间:2023-06-05 14:33:15浏览次数:41  
标签:缓存 String cache caffeine SpringBoot2 key import public


<dependency>
            <groupId>com.github.ben-manes.caffeine</groupId>
            <artifactId>caffeine</artifactId>
            <version>2.9.0</version>
        </dependency>

顺便写了个工具类配合SpringBoot使用:

package com.ciih.refineinner.cache;

import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import org.springframework.stereotype.Component;

import java.util.concurrent.TimeUnit;
import java.util.function.Function;

/**
 * 缓存之王
 *
 * @author Lenovo
 */
@Component
public class CaffeineService {

    private Cache<String, String> cache;

    public CaffeineService() {
        this.cache = Caffeine.newBuilder()
                .expireAfterWrite(15, TimeUnit.MINUTES)
                .maximumSize(100)
                .build();
    }

    /**
     * 存储K-V
     *
     * @param key
     * @param value
     * @return
     */
    public String put(String key, String value) {
        cache.put(key, value);
        return key;
    }

    /**
     * 获取K-V
     *
     * @param key
     * @return
     */
    public String getIfPresent(String key) {
        return cache.getIfPresent(key);
    }

    public String get(String key, Function<String, String> function) {
        return cache.get(key, function);
    }

    public void remove(String key) {
        cache.invalidate(key);
    }
}

 

标签:缓存,String,cache,caffeine,SpringBoot2,key,import,public
From: https://blog.51cto.com/u_14121041/6415448

相关文章

  • 缓存雪崩【Redis 缓存】
    缓存雪崩缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。解决方案:给不同的Key的TTL添加随机值利用Redis集群提高服务的可用性给缓存业务添加降级限流策略给业务添加多级缓存 ......
  • 缓存穿透【Redis 缓存】
    缓存穿透缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会失效,这些请求都会打到数据库。解决方案:1.缓存空对象优点:实现简单,维护方便缺点:额外的内存消耗可能造成短期的不一致 2.布隆过......
  • Spring Bean生命周期之三级缓存循环依赖
    目录1三级缓存1.1引言1.2三级缓存各个存放对象1.3解决循环依赖条件1.3.1解决循环依赖条件1.3.2Sprin中Bean的顺序1.3.3更改加载顺序1.3.3.1构造方法依赖(推荐)1.3.3.2参数注入1.3.3.3@DependsOn(“xxx”)1.3.3.4BeanDefinitionRegistryPostProcessor接口1.3.4执行顺......
  • Android网络图片三级缓存策略
    在移动应用中,我们一般将网络图片分为三个级别,第一级别是网络层,即根据图片的url地址可以找到服务器上相应图片,获取这一层的图片会消耗流量,所以我们希望可以获取后本地就永久使用,所以就会有接下来的缓存策略;第二层缓存是在手机内存层,是将第一层的图片下载到手机内存,这种缓存读取速度......
  • oscache缓存技术
    oscache缓存技术:[url]http://j2eemylove.iteye.com/blog/939828[/url][b]1、OSCache是什么?[/b]OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于......
  • 踩坑|以为是Redis缓存没想到却是Spring事务!
    前言  最近碰到了一个Bug,折腾了我好几天。并且这个Bug不是必现的,出现的概率比较低。一开始我以为是旧数据的问题,就让测试重新生成了一下数据,重新测试。由于后面几轮测试均未出现,我也就没太在意。  可惜好景不长,测试反馈上次的问题又出现了。于是我立马着手排查,根据日志的表......
  • LRU缓存与LinkedHashMap源码
    今天再刷LeetCode时,遇到了第146题LRU缓存。题目如下:请你设计并实现一个满足LRU(最近最少使用)缓存约束的数据结构。实现LRUCache类:LRUCache(intcapacity)以正整数作为容量capacity初始化LRU缓存intget(intkey)如果关键字key存在于缓存中,则返回关键字的值,否......
  • HTTP的缓存机制是什么?
    HTTP缓存机制是一种在Web开发中常用的技术,它旨在提高性能和减少网络流量。通过缓存,可以避免不必要的网络请求,减少服务器负载,并加快页面加载速度。下面是关于HTTP缓存机制的详细介绍。HTTP缓存机制的基本原理是将Web资源(如HTML、CSS、JavaScript、图像等)保存在客户端或中间......
  • MyBatis之一级缓存、二级缓存
    1、一级缓存跟踪BaseExecutor可以看到,在query方法中,实现了缓存逻辑,当缓存不存在的时候,则调用实现类中的doQuery。创建一级缓存的KEY:查看缓存中是否存在,存在则直接返回,不存在则查询数据库:查询数据库:这就是Mybatis中的一级缓存,逻辑十分简单,可以从源码中看到,一级缓存是默认开......
  • 执行计划缓存,Prepared Statement性能跃升的秘密
    摘要:一起看一下GaussDB(forMySQL)是如何对执行计划进行缓存并加速PreparedStatement性能的。本文分享自华为云社区《执行计划缓存,PreparedStatement性能跃升的秘密》,作者:GaussDB数据库。引言在数据库系统中,SQL(StructuredQueryLanguage)语句输入到系统后,一般要经历:词法语法解......