当一个方法中需要操作关系型数据库同时操作redis,如何保证事务?
1.创建一个配置类RedisConfig
2.开启允许事务管理@EnableTransactionManagement
3.配置RedisTemplate后返回容器管理
4.配置事务管理器
@Configuration
@EnableTransactionManagement
public class RedisConfig{
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory redisConnectionFactory){
RedisTemplate<String, String> template = new RedisTemplate<String, String>();
template.setConnectionFactory(redisConnectionFactory);
//配置序列化方式
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
template.setKeySerializer(stringRedisSerializer);
template.setHashKeySerializer(stringRedisSerializer);
template.setValueSerializer(stringRedisSerializer);
template.setHashValueSerializer(stringRedisSerializer);
//开启支持事务
template.setEnableTransactionSupport(true);
return template;
}
//配置事务管理器
@Bean
public PlatformTransactionManager transactionManage(DataSource datasource) throws SQLException {
return new DataSourceTransactionManager(datasource);
}
}
然后在需要事务的方法上愉快的使用@Transactional了。
本篇就到这里。
下一篇预告:
这里的redisTemplate是RedisTemplate<String, String>,所以下一篇预告为:redis自定义value类型。