在SpringBoot中,开启Redis的事务有两种方式,一种是手动开启,一种是使用@Transaction注解。html
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
#redisConfig spring.redis.host=127.0.0.1 spring.redis.port=6379 spring.redis.password= spring.redis.database=0 spring.redis.jedis.pool.max-idle=100 spring.redis.jedis.pool.min-idle=0
//springBoot会自动配置redis,具体可参照RedisAutoConfiguration.java,可是默认的配置,没有开启事务,因此须要自定义 @Configuration @EnableConfigurationProperties({RedisProperties.class}) public class RedisConfig { /** * 实例化 RedisTemplate 对象 * * @return */ @Bean public StringRedisTemplate customStringRedisTemplate(RedisConnectionFactory redisConnectionFactory) { StringRedisTemplate template = new StringRedisTemplate(); template.setConnectionFactory(redisConnectionFactory); template.setEnableTransactionSupport(true); return template; } }
@Transactional(rollbackFor = Exception.class) public void mutiTest(Map<String,String> datas) throws Exception { redisTemplate.opsForValue().multiSet(datas); throw new Exception("custom exception"); }
//开启事务 redisTemplate.multi(); //do something //关闭事务 redisTemplate.exec();
redis事务详解java