小程序三方平台开发: 解析小程序开发的未来趋势和机遇
783
2023-05-02
SpringBoot2.3整合redis缓存自定义序列化的实现
1.引言
我们使用redis作为缓存中间件时,当我们第一次查询数据的时候,是去数据库查询,然后查到的数据封装到实体类中,实体类会被序列化存入缓存中,当第二次查数据时,会直接去缓存中查找被序列化的数据,然后反序列化被我们获取。我们在缓存中看到的序列化数据不直观,如果想看到类似json的数据格式,就需要自定义序列化规则。
2.整合redis
pom.xml:
application.yml:
spring:
redis:
host: 192.168.85.130
port: 6379
database: 0
springboot主配置类要加上@EnableCaching注解
3.自定义序列化
@Configuration
public class MyRedisConfig {
@Bean
public RedisTemplate
RedisTemplate
template.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer
template.setDefaultSerializer(serializer);
return template;
}
@Bean
public CacheManager cacheManager(RedisConnectionFactory factory){
RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofDays(1))
.disableCachingNullValues()
.serializeKeysWith(RedisSerializationContext.SerializationPair
.fromSerializer(new StringRedisSerializer()))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
return RedisCacheManager.builder(factory).cacheDefaults(cacheConfiguration).build();}
}
4.测试
DeptService:
@Service
public class DeptService {
@Autowired
DepartmentMapper departmentMapper;
@Cacheable(value = "dept")
public Department findById(Integer id){
System.out.println("查询"+id+"号部门");
Department department = departmentMapper.getDeptById(id);
return department;
}
}
EmployeeServiceJpznooZdr:
@Service
public class EmployeeService {
@Autowired
EmployeeMapper employeeMapper;
@Cacheable(value = "emp")
public Employee findById(Integer id){
System.out.println("查询"+id+"号员工");
Employee employee = employeeMapper.getEmpById(id);
return employee;
}
}
@Cacheable(value = “dept”) :该注解在方法上,方法传入参数默认为key值,方法返回值为value值,注解的参数value = "dept"是缓存的名子
结果:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~