当前位置:网站首页 > R语言数据分析 > 正文

webflux使用caffeine cache(webflux formdata)



一、前言

Spring Cache 对 Cahce 进行了抽象,提供了 @Cacheable、@CachePut、@CacheEvict 等注解。Spring Boot 应用基于 Spring Cache,既提供了基于内存实现的缓存管理器,可以用于单体应用系统,也集成了 Redis 等缓存服务器,可以用于大型系统或者分布式系统。

二、关于 Cache

应用系统需要通过 Cache 来缓存不经常改变的数据以提高系统性能和增加系统吞吐量,避免直接访问数据库等低速的存储系统。缓存的数据通常存放在访问速度更快的内存中或者是低延迟存取的存储器、服务器上。缓存系统存储大都是不经常改变的业务数据,如用户权限、字典数据、配置信息等等。

1、@Cacheable注解

@Cacheable注解的作用是Spring在调用该方法之前,首先在缓存中查找方法的返回值,默认的key是根据参数值生成,如果存在,直接返回缓存中的值,否则执行该方法,并将返回值保存到缓存中

@Cacheable运行流程:

1.方法运行之前,先去查询Cache(缓存组件),按照cacheNames指定的名字获取;

(CacheManager先获取相应的缓存),第一次获取缓存如果没有Cache组件会自动创建

2.去Cache中查找缓存的内容,使用一个key,默认就是方法的参数值;

  • key是按照某种策略生成的;默认是使用keyGenerator生成的,
  • Spring默认加载的是SimpleCacheManage,SimpleKeyGenerator生成key的默认策略是:
  • 如果没有参数;key=new SimpleKey()
  • 如果有一个参数:key=参数的值
  • 如果有多个参数:key=new SimpleKey(params)

3.没有查到缓存就调用目标方法;

4.将目标方法返回的结果,放进缓存中

@Cacheable属性说明:

1.acheNames/value:该属性值必须提供,指定缓存组件的名字,将方法的返回结果放在哪个缓存中,是数组的 方式,可以指定多个缓存;

如:cacheNames = "product"或者cacheNames = {“product1”,“product2”}

2.key:缓存数据使用的key,不指定key则默认是使用方法参数的值该属性值支持SpEL表达式

3.cacheManager:指定缓存管理器;或者cacheResolver指定获取解析器

4.condition:指定符合条件的情况下才缓存 condition = “#a0=1” 当方法中第一个参数=1的时候才进行缓存

5.unless:否定缓存;当unless指定的条件为true,方法的返回值就不会被缓存;可以获取到结果进行判断

unless = “#result == null”

unless = “#a0==2”:如果第一个参数的值是2,结果不缓存;

6.sync:是否使用异步模式

使用样例:

2、自定义Key生成器

除了通过SPEL表达式之外,还可以通过自定义key生成器的方式,Spring缓存模块提供了org.springframework.cache.interceptor.KeyGenerator接口用于缓存key的生成声明,因此我们可以自定义一个MyKeyGenerator类并实现了KeyGenerator接口 ,使用如下:

该方法测试用,关于缓存key的生成方式,网上有很多种策略。

使用时只需要修改注解的key属性即可:

3、 @CachePut

@CachePut注解的作用简单的说一句话:既调用方法,又缓存数据。

4、@CacheEvict注解

该注解的作用根据指定的key或者是allEntries属性值移除缓存中特性的键值对。

案例

5、@Caching注解

该注解是一个分组注解,作用是可以同时应用多个其他注解,该注解提供了3个属性cacheable,put,evict分别用于组合@Cacheable、@CachePut、@CacheEvict三个注解

步骤:

1、环境搭建:
2、导入pom依赖
3、项目结构

springboot 清除浏览器cookie缓存的信息_缓存

4、pojo层UserInfo类
5、yaml配置文件:
6、mapper层:
7、service和serviceImpl
8、Controller层
9、主启动类:
@Cacheable 测试

第一次测试查询:

springboot 清除浏览器cookie缓存的信息_java_02

第二次执行查询方法

springboot 清除浏览器cookie缓存的信息_缓存_03

@CachePut 测试

执行更新用户方法

springboot 清除浏览器cookie缓存的信息_mybatis_04

执行完更新用户方法之后 再次执行 查询方法 看控制台会不会有输出

springboot 清除浏览器cookie缓存的信息_java_05

@CachePut 测试

springboot 清除浏览器cookie缓存的信息_spring_06

进行第二次测试 再次执行查询方法 发现控制台没有输出

springboot 清除浏览器cookie缓存的信息_spring_07

到此这篇webflux使用caffeine cache(webflux formdata)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • hprof是什么文件可以删除吗(hprof文件怎么产生的)2025-07-05 21:54:09
  • yuv420和rgb哪个好(4k yuv420比rgb差多少)2025-07-05 21:54:09
  • htttp://jndj.ostα.org.cn成绩查询(jypjhfjyyunnetcn成绩查询)2025-07-05 21:54:09
  • resnet2(resnet20参数量)2025-07-05 21:54:09
  • swagger文档地址(swagger文档访问地址)2025-07-05 21:54:09
  • tpmall怎么读(tprtoise怎么读)2025-07-05 21:54:09
  • treesize手机版(tree mobile)2025-07-05 21:54:09
  • yarn装包(yarn装包存在的问题)2025-07-05 21:54:09
  • vconsole是什么意思(vcoros是什么意思)2025-07-05 21:54:09
  • top18女rapper(top18女rapperkino)2025-07-05 21:54:09
  • 全屏图片