—— 阿尔伯特·爱因斯坦

程序员の奇妙冒险

Spring Boot
2025-07-24 16:34阅读:14评论:0

集成redisson使用@Cacheable 缓存数据报错问题

缓存异常 caches=[memberuserbrowse_product] key='' keyGenerator='' cacheManager='' cacheResolver='' condition='' unless='#result == null' sync='false' 需要配置

_PROTECTED0_ > caches=[memberuserbrowseproduct] | key='' | keyGenerator='' | cacheManager='' | cacheResolver='' | condition='' | unless='#result == null' | sync='false'
  • 需要配置注入CacheManager,如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
import org.redisson.api.RedissonClient;
import org.redisson.spring.cache.CacheConfig;
import org.redisson.spring.cache.RedissonSpringCacheManager;
import org.redisson.spring.data.connection.RedissonConnectionFactory;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
import java.util.HashMap;
import java.util.Map;
 
/**
* Redisson Spring Data Redis
*
* @author wency_cai
*/
@Configuration
@EnableCaching
public class RedissonConfig {
 
/**
* SpringRedissonConnectionFactory
*
* @param redisson
* @return
*/
@Bean
public RedissonConnectionFactory redissonConnectionFactory(RedissonClient redisson) {
return new RedissonConnectionFactory(redisson);
}
 
/**
* Redisson 使 @Cacheable CacheManager key='' | keyGenerator='' | cacheManager='' | cacheResolver='' | condition='',true,false
*
* @param redissonClient
* @return
*/
@Bean
public CacheManager cacheManager(RedissonClient redissonClient) {
Map<String, CacheConfig> config = new HashMap<>();
// 为特定缓存名称配置
//config.put("myCache", new CacheConfig(60 * 60 * 1000, 30 * 60 * 1000)); // 1小时过期,30分钟后开始逐出
return new RedissonSpringCacheManager(redissonClient, config);
}
}
 
1
2
3
4
5
6
7
8
9
10
@Bean
public RedisCacheManager userRedisCacheManager(RedisConnectionFactory connectionFactory){
Jackson2JsonRedisSerializer<Object> redisSerializer = new Jackson2JsonRedisSerializer<>(JsonMapperUtils.MAPPER, Object.class);
RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
// 设置Redis缓存有效期为1小时
.entryTtl(Duration.ofSeconds(60 * 60))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer));
return RedisCacheManager.builder(connectionFactory).cacheDefaults(cacheConfiguration).build();
}
 
评论(0)
暂无评论来抢沙发吧~