Spring集成GuavaCache实现本地缓存
Spring集成GuavaCache实现本地缓存:
一、SimpleCacheManager集成GuavaCache
1 package com.bwdz.sp.comm.util.test;
2
3 import com.google.common.cache.CacheBuilder;
4 import org.springframework.cache.CacheManager;
5 import org.springframework.cache.annotation.EnableCaching;
6 import org.springframework.cache.guava.GuavaCache;
7 import org.springframework.cache.support.SimpleCacheManager;
8 import org.springframework.context.annotation.Bean;
9 import org.springframework.context.annotation.Configuration;
10
11 import java.util.Arrays;
12 import java.util.concurrent.TimeUnit;
13
14 //@Configuration用于定义配置类,相当于把该类作为spring的xml配置文件,里面包含<beans>,作用为:初始化Spring容器(应用上下文)
15 //@EnableCaching注解驱动的缓存管理功能:不需要在XML文件中配置cache manager了,等价于<cache:annotation-driven/>.能够在服务类方法上标注@Cacheable
16 //@Bean标注在方法上(返回某个实例的方法),等价于spring的xml配置文件中的<bean>,作用为:注册bean对象
17 @Configuration
18 @EnableCaching
19 public class CacheConfig {
20 @Bean
21 public CacheManager localCacheManager() {
22 SimpleCacheManager simpleCacheManager = new SimpleCacheManager();
23 //把各个cache注册到cacheManager中,GuavaCache实现了org.springframework.cache.Cache接口
24 simpleCacheManager.setCaches(Arrays.asList(
25 //CacheBuilder构建多个cache
26 new GuavaCache(
27 "TIMEOUT_1_HOURS",//定义cache名称:@Cacheable的cacheNames(等价value)属性要和此对应
28 CacheBuilder
29 .newBuilder()
30 .expireAfterWrite(1, TimeUnit.HOURS)//参数:过期时长、单位
31 .build()
32 ),
33 new GuavaCache(
34 "TIMEOUT_5_MINUTE",
35 CacheBuilder
36 .newBuilder()
37 .expireAfterWrite(5, TimeUnit.MINUTES)
38 .build()
39 )
40 ));
41 return simpleCacheManager;
42 }
43 }
二、集成后直接加注解使用
1 //key:缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写(当然随便指定也不会报错)
2 @Cacheable(cacheNames = "TIMEOUT_1_HOURS", key = "'cache_getXfshxxss'")
3 public List<Map> getXfshxxss() throws Exception {
4 return (List<Map>) dao.findForList("XxkpsjtbMapper.getXfshxxss", null);
5 }
1、Spring中的cache是为方法做缓存的,spring只是提供了个缓存抽象,具体的实现由第三方提供(比如guava或者自己编写)
3、GuavaCache 支持多种缓存过期策略:定时过期、定时刷新等等
4、本地缓存:GuavaCache、ehcache、CaffeineCache,分布式缓存(网络缓存):redis、memcached
https://blog.csdn.net/qq_34531925/article/details/80864773
https://segmentfault.com/a/1190000011105644
Spring集成GuavaCache实现本地缓存的更多相关文章
- springboot之本地缓存(guava与caffeine)
1. 场景描述 因项目要使用本地缓存,具体为啥不用redis等,就不讨论,记录下过程,希望能帮到需要的朋友. 2.解决方案 2.1 使用google的guava作为本地缓存 初步的想法是使用googl ...
- spring boot:使用spring cache+caffeine做进程内缓存(本地缓存)(spring boot 2.3.1)
一,为什么要使用caffeine做本地缓存? 1,spring boot默认集成的进程内缓存在1.x时代是guava cache 在2.x时代更新成了caffeine, 功能上差别不大,但后者在性能上 ...
- 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)
Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...
- 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)
硬盘和内存的作用是什么 硬盘的作用毫无疑问我们大家都清楚,不就是用来存储数据文件的么?如照片.视频.各种文档或等等,肯定也有你喜欢的某位岛国老师的动作片,这个时候无论我们电脑是否关机重启它们永远在那里 ...
- spring+redis的集成,redis做缓存
1.前言 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.我们都知道,在日常的应用中,数据库瓶颈是最容易出现的 ...
- Spring集成缓存
Want 上一篇简单服务端缓存API设计设计并实现了一套缓存API,适应不同的缓存产品,本文重点是基于Spring框架集成应用开发. 缓存集成 以普通Web应用开发常见的搭配Spring+Spring ...
- (转)为Spring集成的Hibernate配置二级缓存
http://blog.csdn.net/yerenyuan_pku/article/details/52896195 前面我们已经集成了Spring4.2.5+Hibernate4.3.11+Str ...
- 【开源项目系列】如何基于 Spring Cache 实现多级缓存(同时整合本地缓存 Ehcache 和分布式缓存 Redis)
一.缓存 当系统的并发量上来了,如果我们频繁地去访问数据库,那么会使数据库的压力不断增大,在高峰时甚至可以出现数据库崩溃的现象.所以一般我们会使用缓存来解决这个数据库并发访问问题,用户访问进来,会先从 ...
- spring boot: 用redis的消息订阅功能更新应用内的caffeine本地缓存(spring boot 2.3.2)
一,为什么要更新caffeine缓存? 1,caffeine缓存的优点和缺点 生产环境中,caffeine缓存是我们在应用中使用的本地缓存, 它的优势在于存在于应用内,访问速度最快,通常都不到1ms就 ...
随机推荐
- java-02-基础语法
1.分支语句 if语句 格式 if(关系表达式1){语句1} else if(关系表达式2){语句2} else{语句3}; 说明 如果关系表达式1的值为true,执行语句1. 如果关系表达式2的值为 ...
- burpsuite无法拦截本地流量
参考文章链接:https://blog.csdn.net/tb_youth/article/details/103436796?utm_medium=distribute.pc_relevant.no ...
- vue封装API接口
第一步: 首先引入axios 然后创建两个文件夹api和http http.js 里面的 1 import axios from 'axios';//引入axios 2 3 //环境的切换 开发环境( ...
- openstack高可用集群17-openstack集成Ceph准备
Openstack集成Ceph准备 Openstack环境中,数据存储可分为临时性存储与永久性存储. 临时性存储:主要由本地文件系统提供,并主要用于nova虚拟机的本地系统与临时数据盘,以及存储gla ...
- 灯光设置(light)
clc;clear all;close all; %% 台灯的设置figure('color','k')% 底座fill3([0 1 1 0],[0 0 1 1],[0 0 0 0],'b',... ...
- NET 5 收发邮件之 MailKit
大家都用过SmtpClient来处理发送邮件的操作,不过这个类以及被标记已过时,所以介绍一个微软推荐的库MailKit来处理. MailKit开源地址:https://github.com/jsted ...
- 使用 transmittable-thread-local 组件解决 ThreadLocal 父子线程数据传递问题
在某个项目中,需要使用mybatis-plus多租户功能以便数据隔离,前端将租户id传到后端,后端通过拦截器将该租户id设置到ThreadLocal以便后续使用,代码大体上如下所示: ThreadLo ...
- Springboot 源码解析-自定装配
面试官经常会问你知道springboot的自定装配吗?它是怎么实现的吗?今天我们就来通过源码一起分析下它吧.首先我们先搭建一个springboot的简单项目,找到启动类, 然后通过这个注解我们进入到@ ...
- ubuntu系统64位dnw
/* dnw2 linux main file. This depends on libusb. * * * * Author: Fox <hulifox008@163.com> * * ...
- java零基础之---eclipse的使用
想写一篇关于初学者如何使用工具的博客,作为初学者使用IDE的第一个工具,深受大家喜欢,先写一篇eclipse的,然后再逐步推出idea, vscode 等 1. eclipse的下载及安装 1)百度搜 ...