SpringBoot@CacheableRedis设置缓存过期时间
1.x 设置
@Bean
@Primary
public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate);
Map<String, Long> expires = new HashMap<>();
expires.put("timeout", 60L);
// 设置超时
// 根据特定名称设置有效时间
redisCacheManager.setExpires(expires);
/
/ 设置默认的时间
redisCacheManager.setDefaultExpiration(cacheDefaultExpiration);
return redisCacheManager;
}
使⽤⽅式:
转载:传送门
@Configuration
//@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 3600 * 12)//最⼤过期时间
@EnableCaching
public class RedisConfig {
@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager rcm = new RedisCacheManager(redisTemplate);
//设置缓存过期时间
Map<String, Long> expires = new HashMap<>();cacheable
expires.put("12h", 3600 * 12L);
expires.put("1h", 3600 * 1L);
expires.put("10m", 60 * 10L);
rcm.setExpires(expires);
// rcm.setDefaultExpiration(60 * 60 * 12);//默认过期时间
return rcm;
}
}
//----------------------------------------------------------
@Cacheable(value = "12h", key = "#hodName")
@Override
public List<User> getUserArticleRank() {
//获得排⾏榜前10名的⽤户,每12⼩时刷新⼀次
return userRepository.findTop10ByArticleSize();
}
2.x 设置
转载:传送门
/**
* 2.XX版本的配置
*
*/
@Bean
public CacheManager cacheManager(RedisConnectionFactory factory) {
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig(); // ⽣成⼀个默认配置,通过config对象即可对缓存进⾏⾃定义配置
config = Ttl(Duration.ofMinutes(2)) // 设置缓存的默认过期时间,也是使⽤Duration设置
.disableCachingNullValues(); // 不缓存空值
// 设置⼀个初始化的缓存空间set集合
Set<String> cacheNames = new HashSet<>();
cacheNames.add("catalog_test_id");
cacheNames.add("catalog_test_name");
// 对每个缓存空间应⽤不同的配置
Map<String, RedisCacheConfiguration> configMap = new HashMap<>();
configMap.put("catalog_test_id", config);
configMap.put("catalog_test_name", Ttl(Duration.ofMinutes(5)));
RedisCacheManager cacheManager = RedisCacheManager.builder(factory) // 使⽤⾃定义的缓存配置初始化⼀个cacheManager .initialCacheNames(cacheNames) // 注意这两句的调⽤顺序,⼀定要先调⽤该⽅法设置初始化的缓存名,再初始化相关的配置.withInitialCacheConfigurations(configMap)
.build();
return cacheManager;
}
@CacheConfig(cacheNames = "catalog_test_name")
public class SsoCache{
@Cacheable(keyGenerator = "wiselyKeyGenerator")
public String getTokenByGsid(String gsid)
}
-------------------------------------
使⽤(name中增加“#”,后⾯是过期时间,不加则⾛默认时间)
@Cacheable(cacheNames = "catalog_test_name#120", unless = "#result==null")
public UserEntity findUserByUserName(String userName) {
return userRepository.findUserByUserName(userName);
}
转⾃:blog.csdn/qq_28114159/article/details/106098180

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。