自定義緩存註解
㈠ 自定義rediscachemanager
在項目的Redis配置類RedisConfig中,自定義名為cacheManager的Bean組件,用於Redis緩存管理。
java
@Bean
public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
創建String和JSON格式序列化對象,分別用於緩存數據key和value的轉換。
RedisSerializer strSerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class);
解決查詢緩存轉換異常問題,使用ObjectMapper進行序列化。
ObjectMapper om = new ObjectMapper();
設置ObjectMapper的可見性和非最終類型,以適應序列化。
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
定製序列化方式,使用序列化對象對key和value進行序列化。
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofDays(1))
.serializeKeysWith(RedisSerializationContext.SerializationPair
.fromSerializer(strSerializer))
.serializeValuesWith(RedisSerializationContext.SerializationPair
.fromSerializer(jacksonSeial))
.disableCachingNullValues();
構建緩存管理器,設置緩存默認配置。
RedisCacheManager cacheManager = RedisCacheManager
.builder(redisConnectionFactory).cacheDefaults(config).build();
返回自定義的緩存管理器。
}
自定義的RedisCacheManager中,通過`@Bean`註解實現,包含對緩存數據key和value的序列化方式定製。使用`StringRedisSerializer`和`Jackson2JsonRedisSerializer`分別進行字元串和JSON格式的序列化,同時設定緩存有效期為1天。
完成自定義後,可進行測試以驗證效果。使用自定義序列化機制的RedisCacheManager時,實體類無需實現序列化介面。
學習上述內容,可參考拉勾教育的《Java工程師高薪訓練營》課程,該課程提供全面的知識體系和內推大廠服務。建議感興趣的朋友也查看。