redis自定义RedisCacheManager
1.redis自定义配置
package com.meritdata.cloud.shellmiddleplatform.dataservice.config; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import com.meritdata.shellmodel.ShellMerchant; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializationContext; /** * 2020/8/13 4:41 PM * * @author shoo * @describe */ @Configuration @EnableCaching public class MyRedisCacheConfiguration { @Bean public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jacksonSeial.setObjectMapper(om); //设置默认缓存序列器为json序列化器 redisTemplate.setDefaultSerializer(jacksonSeial); return redisTemplate; } //springboot 2.x 创建方式 @Bean public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) { Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jacksonSeial.setObjectMapper(om); //配置缓存管理器为json序列化器 RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig() .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jacksonSeial)); //使用自定义的配置构建缓存管理器 RedisCacheManager cacheManager = RedisCacheManager.builder(redisConnectionFactory).cacheDefaults(config).build(); return cacheManager; } }
2.用法
2.1 类上添加注解 @CacheConfig(cacheNames = "shellMerchant")
2.2 查询方法上添加注解 @Cacheable(key = "#clientId")
2.3 更新方法上添加注解 @CachePut(key = "#shellMerchant.clientId")
package com.meritdata.cloud.shellmiddleplatform.dataservice.fourInOne.service.impl;/** * 2020/7/2 11:29 AM * * @author shoo * @describe 商户 * */ @Service @CacheConfig(cacheNames = "shellMerchant") public class ShellMerchantService implements IShellMerchantService { @Autowired private ShellMerchantRepository shellMerchantRepository; @Override @CachePut(key = "#shellMerchant.clientId") public ShellMerchant add(ShellMerchant shellMerchant) {return shellMerchantRepository.save(shellMerchant); } @Override @Cacheable(key = "#clientId") public ShellMerchant sel(String clientId) { return shellMerchantRepository.findByClientId(clientId); } @Override @CachePut(key = "#shellMerchant.clientId") public ShellMerchant update(ShellMerchant shellMerchant) { ShellMerchant merchant = shellMerchantRepository.getById(shellMerchant.getId()); merchant = shellMerchantRepository.save(merchant); return merchant; } }
3.redis缓存如下
播种和收获通常不在一个季节,而中间的过程叫做坚持~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构