SpringBoot2.x整合redis,并开启事务

概述

在SpringBoot中,开启Redis的事务有两种方式,一种是手动开启,一种是使用@Transaction注解。html

springBoot框架及redis版本

<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>

配置Redis连接池

#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

事务开启方式

使用注解方式

1. redis配置类

//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;
    }
}

2. 在须要开启事务的方法上面加上注解

@Transactional(rollbackFor = Exception.class)
    public void mutiTest(Map<String,String> datas) throws Exception {
        redisTemplate.opsForValue().multiSet(datas);
        throw new Exception("custom exception");
    }

手动开启

1. 无需配置,手动开启事务

//开启事务
        redisTemplate.multi();
        //do something
        //关闭事务
        redisTemplate.exec();

分享一篇关于redis事务的文章

redis事务详解java

相关文章
相关标签/搜索