零度星河
返回
发布于 更新于 阅读:80 评论:0

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

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

缓存异常

caches=[member_user_browse_product] | 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
 
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 {
 
/**
* 在Spring上下文中注册RedissonConnectionFactory
*
* @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
@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)
暂无评论 来抢沙发吧~

目录

SpringWonderland

探索 Spring 生态的奇妙世界

2025-07-24 16:34

我的标签

随笔分类

归档

查看完整归档 →