当前位置: 首页 > article >正文

jvm一级缓存

1、利用JVM缓存。脱离redis。

2、导包,springboot自带此包。如没有可以导:com.google.guava:guava:20.0的包。

3、直接上代码:

package com.leo.cache;

import com.alibaba.fastjson.JSONObject;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import lombok.SneakyThrows;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit;


/**
 * @author Leo
 */
@Component
public class JvmLruOneCacheComponent {

    Cache<String, String> allCache;

    @PostConstruct
    public void initCache() {
        allCache = CacheBuilder.newBuilder()
                .weakValues()
                最大容量
                .maximumSize(10L)
                //多少分钟后没有访问的数据会被清除
                .expireAfterAccess(30L, TimeUnit.MINUTES)
                // 设置并发级别为cpu核心数
                .concurrencyLevel(Runtime.getRuntime().availableProcessors() * 2)
                .build();
    }

    public Map<String, String> getCache() {
        return allCache.asMap();
    }


    @SneakyThrows
    public List<StockCrawlingResponseDto> getStockCrawlingList() {
        String key = "xxxxxxx";
        //先获取缓存。没有缓存就从后面的方法获取数据并存入缓存
        String jsonStr = allCache.get(key, () -> JSONObject.toJSONString(xxxxService.getData()));
        return JSONObject.parseArray(jsonStr, xxxdto.class);
    }

    public String getCacheByKey(String key) {
        return allCache.getIfPresent(key);
    }

    public void setCacheByKey(String key, String value) {
        allCache.put(key, value);
    }

    public void deleteAllCache() {
        allCache.invalidateAll();
    }

    public void deleteCache(String key) {
        allCache.invalidate(key);
    }
}


http://www.kler.cn/a/230229.html

相关文章:

  • iOS 17.4 Not Installed
  • 零基础学安全--云技术基础
  • vue 预览pdf 【@sunsetglow/vue-pdf-viewer】开箱即用,无需开发
  • [模版总结] - 树的基本算法4 -最近公共祖先 LCA
  • 一个全面的Vue 3组件通信演示展示
  • SQL 分页查询详解
  • jmeter二次开发函数-生成身份证号
  • sql求解连续两个以上的空座位
  • arcgis各种版本下载
  • 再识C语言 DAY15 【指针(中)理论结合实践】
  • 无人机激光雷达标定板
  • 限制Unity帧率的方式
  • 【QT】opcuaServer 的构建
  • ELAdmin 新增Module
  • vite打包原理
  • 4、安全开发-Python-蓝队项目流量攻击分析文件动态监控图片隐写技术
  • Golang 学习(一)基础知识
  • iOS平台RTMP|RTSP播放器如何实时回调YUV数据
  • 使用NLTK进行自然语言处理:英文和中文示例
  • c#cad 创建-多线段(三)
  • 市场复盘总结 20240206
  • 人工智能:数据分析之数据预处理、分析模型与可视化
  • MIT-Missing Semester_Topic 6:Version Control (Git) 练习题
  • 华为OD机试真题C卷-篇3
  • OS X(MACOS) C/C++ 程序链接静态库限制。
  • 2023-总结