代码拉取完成,页面将自动刷新
tutu-cache 是一个简单易用的Spring缓存注解。
使用tutu-cache注解来代替@Cacheable和@CacheEvict等注解
tu-cache文档 https://doc.tucache.tunan.co/
<dependencies>
<dependency>
<groupId>co.tunan.tucache</groupId>
<artifactId>tucache-spring-boot-starter</artifactId>
<version>1.0.4.RELEASE</version>
</dependency>
<!-- 可选,建议使用redis,如有没redis依赖默认使用本地缓存 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
</dependencies>
@Bean(name = "redisTemplate")
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setConnectionFactory(redisConnectionFactory);
return redisTemplate;
}
@TuCache("test_service:getList")
public List<String> getList(){
return Arrays.asList("tu","nan");
}
@TuCacheClear("test_service:getList")
public void delList(){
}
String key() default ""
缓存的字符串格式key,支持spEl表达式(使用#{}包裹spEl表达式),默认值为方法签名long expire() default -1
缓存的过期时间,单位(秒),默认永不过期. (在1.0.4.RELEASE以上版本中建议使用 timeout
)boolean resetExpire() default false
每次获取数据是否重置过期时间.TimeUnit timeUnit() default TimeUnit.SECONDS
缓存的时间单位.String condition() default "true"
扩展的条件过滤,值为spEl表达式(直接编写表达式不需要使用#{}方式声明为spEl)@TuCache(key="test_service:getList:#{#endStr}", timeout = 10, timeUnit=TimeUnit.SECONDS)
public List<String> getList(String endStr){
return Arrays.asList("tu","nan",endStr);
}
// 如果需要当前对象的的方法
@TuCache(key="test_service:getList:#{#this.endStr()}", timeout = 120)
public List<String> getList(){
return Arrays.asList("tu","nan",endStr());
}
// 使用springBean, (使用安全访问符号?.,可以规避null错误,具体用法请查看spEl表达式)
@TuCache(key="test_service:getList:#{@springBean.endStr()}", timeout = 120)
public List<String> springBeanGetList(){
return Arrays.asList("tu","nan",springBean.endStr());
}
// 使用condition,当name的长度>=5时进行缓存
@TuCache(key="test_service:getList:#{#name}", condition="#name.length() >= 5")
public List<String> springBeanGetList(String name){
return Arrays.asList("tu","nan",name);
}
public String endStr(){
return "end";
}
String[] key() default {}
删除的key数组,支持spEl表达式(使用#{}包裹spEl表达式)String[] keys() default {}
模糊删除的缓存key数组,支持spEl表达式(使用#{}包裹spEl表达式),对应redis中deleteKeys("test_service:")boolean async() default false
是否异步删除,无需等待删除的结果String condition() default "true"
扩展的条件过滤,值为spEl表达式(直接编写表达式不需要使用#{}方式声明为spEl)@TuCacheClear(key={"test_service:itemDetail:#{#id}"})
public void deleteItem(Long id){
}
// 如果需要调用本地的方法
@TuCacheClear(keys={"test_service:itemList:","test_service:itemDetail:#{#id}"}, async = true)
public void deleteItem(Long id){
}
tucache:
enabled: true
cache-type: redis
profiles:
cache-prefix: "my_tu_key_test:"
# ...
<bean id="tuCacheProfiles" class="co.tunan.tucache.core.config.TuCacheProfiles">
<property name="cachePrefix" value="test_tucache_prefixkey:" />
</bean>
<bean id="tuCacheBean" class="co.tunan.tucache.core.aspect.TuCacheAspect">
<property name="tuCacheService" ref="redisCacheService" />
<property name="tuCacheProfiles" ref="tuCacheProfiles" />
</bean>
@Bean(name = "redisTemplate")
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer(createGenericObjectMapper()));
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer(createGenericObjectMapper()));
redisTemplate.setConnectionFactory(redisConnectionFactory);
return redisTemplate;
}
☕️[请我喝一杯咖啡]
0xE8DF0c045714976c1c67fFc9aBb5538625d5EeDE
*此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型