欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

redis注解 博客分类: redis redis 

程序员文章站 2024-03-17 13:12:46
...

 

value  有隔离作用,不行的话可以:

再手动用一下#root.caches,向spring表明,我们要用value所表示的缓存名来区分具体的缓存实体;

具体用法示例:

当方法的value属性进行了设置(如@Cacheable(value={"cache1", "cache2"})),则有两个cache;

此时可以使用@Cacheable(value={"cache1", "cache2"},key="#root.caches[0].name"),意思就是使用value为“cache1”的缓存;

 

 

 

@CacheEvict(value = "role1",allEntries = true)------整块全部删除

@CacheEvict(value = "role1",key = "#val",allEntries = false)-----指定key

@CachePut(value = "role1",key = "#val")---直接放入缓存块(追加,更新)

@Cacheable(value = "role1",key = "#val")---从缓存块获取,没有走方法

value==@CacheConfig(cacheNames="user")

@AliasFor("cacheNames")

String[] value() default {};

 

@AliasFor("value")

String[] cacheNames() default {};

 

 

 

@Cacheable 注解 源码如下 :

@Target({ElementType.METHOD, ElementType.TYPE})

 

value、cacheNames 属性 : 指定 Cache名称 表示当前方法的返回值是会被缓存在哪个 Cache上--块

key 属性 : 用来指定 Spring缓存方法的返回结果时对应的 key---在快上

@Cacheable(value = "users", key = "#id")

public User find(Integer id) {

    return null;

}

 

@Cacheable(value = "users", key = "#p0")

public User find(Integer id) {

    return null;

}

 

sync属性 : 在多线程环境下,某些操作可能使用相同参数同步调用。默认情况下,缓存不锁定任何资源,可能导致多次计算,而违反了缓存的目的。对于这些特定的情况,属性 sync 可以指示底层将缓存锁住,使只有一个线程可以进入计算,而其他线程堵塞,直到返回结果更新到缓存中

@Cacheable(cacheNames="foos", sync="true")----享元模式

public Foo executeExpensiveOperation(String id) {

}

 

condition属性 : 指定发生的条件,condition属性默认为空,表示将缓存所有的调用情形。其值是通过 SpringEL表达式来指定的,当为true时表示进行缓存处理;当为 false 时表示不进行缓存处理,即每次调用该方法时该方法都会执行一次

@Cacheable(value={"users"}, key="#user.id", condition="#user.id%2==0")

 

@CachePut("users")  刷新缓存---用户可以操作不好指定到块(一个块多个key时)----追加???---追加、覆盖(更新)

https://blog.csdn.net/u013041642/article/details/80370156----------一般是多个方法操作一个缓存,来实现同步

 

@CacheEvict : 

@CacheEvict(value="users", allEntries=true)   --按照块清除,按照key清除(一个server一个块),可以用来整块清除---管理员接口

 

beforeInvocation属性 : 清除操作默认是在对应方法成功执行之后触发的,即方法如果因为抛出异常而未能成功返回时也不会触发清除操作。--触发的时机

 

 

 

@Caching : @Caching注解可以在一个方法或者类上同时指定多 个Spring Cache 相关的注解。其拥有三个属性 : cacheable、put和evict,分别用于指定@Cacheable、@CachePut 和 @CacheEvict----三个元素可以放在一起使用,指明这个方法,触发哪些缓存操作

可以操作其他缓存

@Caching(cacheable = @Cacheable("users"),

         evict = { @CacheEvict("cache2"),

                   @CacheEvict(value = "cache3", allEntries = true) })

public User find(Integer id) {

    return null;

}

 

 

 

参考:

https://blog.csdn.net/chenshun123/article/details/79518812

https://q.cnblogs.com/q/111220/

https://blog.csdn.net/chenleixing/article/details/44815443

https://blog.csdn.net/weixin_34320724/article/details/86029310

 

相关标签: redis