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

限于喜欢 提交于 2020-10-31 03:09:07

概述

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

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事务详解

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!