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
相关推荐
spring boot redis 注解缓存Cacheable (value) 1 spring boot redis 注解缓存是基于spring boot 框架和redis缓存机制的结合,实现了缓存机制的自动化管理。下面将详细介绍spring boot redis 注解缓存的实现机制和...
在Spring Redis注解开发中,我们通常利用Spring Data Redis库来简化与Redis数据库的交互。以下是对标题和描述中涉及的知识点的详细说明: 1. **Spring Data Redis**:Spring Data Redis是Spring框架的一个模块,它...
shiro+springboot2.x+redis注解方式完整项目,包括自定义realm,整合redis缓存管理器,自定义sessionId,自定义session等等,sql文件就在resource文件夹下
改redis序列化方式由GenericJackson2RedisSerializer改为Jackson2JsonRedisSerializer
"spring-data-redis基于注解的实现方式"是这个话题的核心,它探讨了如何利用Spring Data Redis的注解功能来简化数据缓存的实现。下面将详细阐述这一主题,包括相关的技术和实践方法。 首先,我们需要理解Spring ...
redis配置中文注释,大家看看吧,网上找了一部分,自己写了一部分,应该没啥问题
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI编写、支持网络、可基于内存亦可持久化的日志型、Key-Value,并提供多种语言的API。好了,其它的就不介绍了。 @Cacheable 此注解表明在...
在本文中,我们将深入探讨如何使用Spring框架与Redis集成,以实现高效的缓存管理,并通过注解的方式简化这一过程。Redis是一种高性能的键值数据存储系统,常被用于缓存、消息队列等多种场景,而Spring框架则为Java...
Redis 与SpringMVC 集成 基于注解方式
本资源提供了带有完整注释的 Redis 源代码,对于深入理解 Redis 内部工作原理、优化性能以及进行二次开发具有极大的帮助。下面我们将详细探讨 Redis 的主要组成部分及其工作方式。 1. **Redis 数据结构** Redis ...
redis的中文注释版,对redis中的内容添加了详细的中文注解,方便理解和修改配置!!! redis的中文注释版,对redis中的内容添加了详细的中文注解,方便理解和修改配置!!! redis的中文注释版,对redis中的内容添加...
这份注释是作者在创作新版《Redis 设计与实现》期间, 为了了解 Redis 的内部实现而制作的, 所有在书中有介绍的内容, 在源码中都进行了相应的注释。 在注释的过程中, 除了少量空格和空行方面的调整外, 没有对...
在本文中,我们将深入探讨如何使用Spring框架与Redis集成,以实现高效的缓存管理。Redis是一种内存中的数据结构存储系统,常被用作数据库、缓存和消息中间件。Spring框架提供了一种灵活且强大的方式来整合Redis,...
现在,我们有了一份与该书配套的Redis 3.0中文注释版源码,这将极大地便利开发者和学习者对Redis的理解。 Redis 3.0版本是一个重要的里程碑,它引入了许多改进和新特性。首先,让我们关注一下这个版本中的核心概念...
本教程将深入讲解如何在SpringBoot项目中通过注解方式实现Redis数据库的切换。 首先,我们需要理解SpringBoot与Redis的集成原理。SpringBoot提供了对Redis的自动配置支持,只需要在项目中引入`spring-boot-starter-...
本文将深入探讨如何在SpringMVC项目中,通过注解方式集成Redis,以实现高效的数据交互。 首先,我们需要在项目中引入Redis的相关依赖。这通常通过在`pom.xml`文件中添加Spring Data Redis和Jedis客户端库的Maven...
综上所述,"springMVC注解+ security + redis 实例"的学习资料将涵盖这些技术的基本用法和整合方式,帮助开发者掌握如何构建一个安全、高效的Web应用。通过这个实例,你可以了解到如何在Spring MVC应用中使用注解...
如果需要修改端口号,找到`# port 6379`这一行,去掉前面的注释符`#`并更改端口号。 使用批处理脚本`redis.bat`启动Redis服务非常简单。双击运行这个文件,它会调用`redis-server.exe`启动Redis服务。如果一切正常...
redis 配置文件,附中文注释,不落地的redis数据库,适合新手,了解redis 配置
- 在需要缓存的方法上添加Redis注解,指定缓存的key和过期策略。 - 测试和调试,确保所有组件正常工作且能够正确处理异常情况。 以上知识点是本项目的核心技术,它们共同构建了一个高可用、高性能的Web应用。...