清除ehcache缓存方法(ehcache分布式缓存怎么清除)

技术如何使用@CacheEvict清除指定下所有缓存这篇文章将为大家详细讲解有关如何使用@CacheEvict清除指定下所有缓存,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了

本文将详细解释如何使用@ CacheEvict来清除所有指定的缓存。这篇文章的内容质量很高,所以边肖会分享给大家参考。希望你看完这篇文章后有所了解。

00-1010 @ cache recovery(cache name=' parts : grid ',allentries=true)此注释将清除part3360grid下的所有缓存。

@ CacheEvict要求指定一个或多个缓存,以便它们都受到影响。此外,还提供了一个额外的参数allEntries。指示是否需要清除缓存中的所有元素。默认值为false,这意味着它不是必需的。

当所有项都指定为真时,Spring Cache将忽略指定的项。有时我们需要缓存来清除所有元素。

00-101010

@CacheEvict清除指定下所有缓存

描述:在支持Spring Cache的环境中,对于标记为@Cacheable的方法,Spring会在每次执行之前检查缓存中是否有一个关键字相同的Cache元素。如果有,则不执行该方法,而是直接从缓存中获取结果并返回,否则将执行该方法,并将返回的结果存储在指定的缓存中。

//@因为3.1可以在方法和类中标记为相同。

@Target({ElementType。方法,元素类型。类型})

@Retention(保留策略。RUNTIME)

@已继承

@已记录

public@interfaceCacheable{

//缓存名可以用多个数字写。密钥的真正组成以cachename为前缀,将生成多个密钥。

@AliasFor('缓存名称')

String[]value()(默认值{ };

@AliasFor('值')

string[]cache name()(默认为{ };

//支持SpEL写入,可以使用#root、#参数名或# p参数索引。

//详情去https://blog.csdn.net/dalong_bamboo/article/details/103844076

Stringkey()默认值“”;

//互斥:它和键属性互斥。请只用一个,直接写bean的名字就可以了。

StringkeyGenerator()(默认为“”;

//用于选择使用哪个缓存管理器。

StringcacheManager()(默认为“”;

//用户定义如何处理缓存并实现组织。spring framework . cache . interceptor . cache resolver接口。

StringcacheResolver()(默认值“”;

//指示在什么情况下将缓存结果。可以使用SpEL,也可以使用#root。只有真才会按照这个方法行动。

Stringcondition()(默认值“”;

//表示在什么情况下不缓存结果,可以编写SpEL#root,可以使用#result获取方法返回值#result==null的经典值。

斯特林古

nless() default "";
    
    // true:表示强制同步执行。(若多个线程试图为**同一个键**加载值,以同步的方式来进行目标方法的调用)
    // 同步的好处是:后一个线程会读取到前一个缓存的缓存数据,不用再查库了~~~ 
    // 默认是false,不开启同步one by one的
    // @since 4.3  注意是sync而不是Async
    // 它的解析依赖于Spring4.3提供的Cache.get(Object key, Callable<T> valueLoader);方法
    boolean sync() default false;
}

@CachePut:缓存更新

说明:@CachePut也可以声明一个方法支持缓存功能。

与@Cacheable不同的是使用@CachePut标注的方法在执行前不会去检查缓存中是否存在之前执行过的结果,而是每次都会执行该方法,并将执行结果以键值对的形式存入指定的缓存中。

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Cacheable {
 @AliasFor("cacheNames")
 String[] value() default {};
 @AliasFor("value")
 String[] cacheNames() default {};
 // 注意:它和上面区别是。此处key它还能使用#result
 String key() default "";
 String keyGenerator() default "";
 String cacheManager() default "";
 String cacheResolver() default "";
 String condition() default "";
 String unless() default "";
}

@CacheEvict:缓存删除

说明:@CacheEvict是用来标注在需要清除缓存元素的方法或类上的。当标记在一个类上时表示其中所有的方法的执行都会触发缓存的清除操作。

@CacheEvict可以指定的属性有value、key、condition、allEntries和beforeInvocation。其中value、key和condition的语义与@Cacheable对应的属性类似。

即value表示清除操作是发生在哪些Cache上的(对应Cache的名称);key表示需要清除的是哪个key,如未指定则会使用默认策略生成的key;condition表示清除操作发生的条件。

下面我们来介绍一下新出现的两个属性allEntries和beforeInvocation。

allEntries属性,allEntries是boolean类型,表示是否需要清除缓存中的所有元素。

默认为false,表示不需要。当指定了allEntries为true时,Spring Cache将忽略指定的key。

有的时候我们需要Cache一下清除所有的元素,这比一个一个清除元素更有效率。

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Cacheable {
 @AliasFor("cacheNames")
 String[] value() default {};
 @AliasFor("value")
 String[] cacheNames() default {};
 // 它也能使用#result
 String key() default "";
 String keyGenerator() default "";
 String cacheManager() default "";
 String cacheResolver() default "";
 String condition() default "";
 // 是否把上面cacheNames指定的所有的缓存都清除掉,默认false
 boolean allEntries() default false;
 // 是否让清理缓存动作在目标方法之前执行,默认是false(在目标方法之后执行)
 // 注意:若在之后执行的话,目标方法一旦抛出异常了,那缓存就清理不掉了~~~~
 boolean beforeInvocation() default false;
}

关于如何使用@CacheEvict清除指定下所有缓存就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/157917.html

(0)

相关推荐

  • 如何娇喘,女人为什么那么难以满足

    技术如何娇喘,女人为什么那么难以满足婚前跟一个女孩约过两次,她有男友所以之后一直不答应再约,怎么求都不愿意,求了半年多才有第二次,后来再也不理我,后来就和老婆闪婚了如何娇喘。可能跟那女孩床上太和谐了显得跟老婆做很没意思,

    生活 2021年10月29日
  • linux中如何使用strace追踪mysql执行语句

    技术linux中如何使用strace追踪mysql执行语句这篇文章将为大家详细讲解有关linux中如何使用strace追踪mysql执行语句,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获

    攻略 2021年10月30日
  • Intellij IDEA智能补全的方法有哪些

    技术Intellij IDEA智能补全的方法有哪些本篇内容介绍了“Intellij IDEA智能补全的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情

    攻略 2021年11月16日
  • 生成JSON元数据对象的示例分析

    技术生成JSON元数据对象的示例分析生成JSON元数据对象的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。数据验证是生成 JSON应用程序中最富

    攻略 2021年11月25日
  • snow形容词,车上snow是什么意思

    技术snow形容词,车上snow是什么意思一,SNOW是雪地模式的意思。二,snow是雪地模式在仪表盘上的显示。1,snow,在变速器旁边一般会有个SNOW按键,按下SNOW按键后,汽车以雪地模式行驶,适合积雪或湿滑地面

    生活 2021年10月23日
  • 如何分析ASP.NET三层结构及三层架构的缺点

    技术如何分析ASP.NET三层结构及三层架构的缺点如何分析ASP.NET三层结构及三层架构的缺点,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。ASP.NET

    攻略 2021年11月26日