spring-cache使用redisCacheManager报错ERR EXEC without MULTI

本文介绍了在使用Spring的spring-data-redis时遇到的"ERR EXEC without MULTI"错误,深入分析了Spring的RedisCacheManager、RedisTemplate的事务支持属性以及Redis的事务机制。通过详细讲解配置选项和执行流程,揭示了导致错误的原因,并提出了应对策略,包括只启用transactionAware或enableTransactionSupport,以及避免错误的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做项目使用Spring自己封装的spring-data-redis(版本:spring-3.2,spring-data-redis-1.5,jedis-2.6),当使用redis的事务时,一直报"ERR EXEC without MULTI"错误,经过两天多的源码研究,发现问题在于redis的事务配置和源码实现上。

在使用redis配置的时候,如果需要开始redis的事务,一般会遇到以下两个属性的配置。然而事实上,当使用spring自己封装的RedisCacheManager时,是不需要配置RedisTemplate的enableTransactionSupport属性的,即RedisCacheManager的transactionAware=true,但RedisTemplate的enableTransactionSupport要等于默认值false,原因在下面分析中。

首先需要了解redis事务的机制是和数据库(如mysql)不一样的,具体网上有很多解释,借鉴http://www.runoob.com/redis/redis-transactions.html中的说明:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值