事物是一组命令的集合,一个事务中的所有的命令都会被序列化后按顺序执行,中间不会被其它命令插入
multi/exec
redistemplate.setEnableTransactionSupport(true); // 开启事务支持
redistemplate.multi();// 开启事务
redistemplate.opsForValue().set(stockKey, --stock); // 商品库存递减
redistemplate.opsForSet().add(winprizeKey, userId); // 记录中奖名单
execResults = redistemplate.exec();// 执行事务,discard为取消事务
同一个事务中如果有一条命令执行失败,其后的命令仍然会被执行,没有回滚,所以不能保证原子性
watch
redistemplate.setEnableTransactionSupport(true); // 开启事务支持
redistemplate.watch(stockKey); // 监控商品库存
redistemplate.multi();// 开启事务
redistemplate.opsForValue().set(stockKey, --stock); // 商品库存递减
redistemplate.opsForSet().add(winprizeKey, userId); // 记录中奖名单
execResults = redistemplate.exec();// 执行事务,discard为取消事务
watch指令类似乐观锁,事务提交时,如果stockKey的值发生改变,则整个事务队列都不会被执行
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。