标签:事务 exec watch 事物 Redis multi stockKey redisTemplate
事物是一组命令的集合,一个事务中的所有的命令都会被序列化后按顺序执行,中间不会被其它命令插入
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的值发生改变,则整个事务队列都不会被执行
标签:事务,exec,watch,事物,Redis,multi,stockKey,redisTemplate 来源: https://blog.csdn.net/qq_30818545/article/details/121184065
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。