作为关系型数据库中一项非常重要的基础功能——事务,在 Redis 中是如何处理并使用的?
前言
事务指的是提供一种将多个命令打包,一次性按顺序地执行的机制,并且保证服务器只有在执行完事务中的所有命令后,才会继续处理此客户端的其他命令。
事务也是其他关系型数据库所必备的基础功能,以支付的场景为例,正常情况下只有正常消费完成之后,才会减去账户余额。但如果没有事务的保障,可能会发生消费失败了,但依旧会把账户的余额给扣减了,我想这种情况应该任何人都无法接受吧?所以事务是数据库中一项非常重要的基础功能。
事务基本使用
事务在其他语言中,一般分为以下三个阶段:
- 开启事务——Begin Transaction
- 执行业务代码,提交事务——Common Transaction
- 业务处理中出现异常,回滚事务——Rollback Transaction
以 Java 中的事务执行为例:
// 开启事务
begin();
try {//......// 提交事务commit();
} catch(Exception e) {// 回滚事务rollback();
}
Redis 中的事务从开始到结束也是要经历三个阶段:
- 开启事务
- 命令入列
- 执行事务/放弃事务
其中,开启事务使用 multi 命令,事务执行使用 exec 命令,放弃事务使用 discard 命令。
开启事务
multi 命令用于开启事务&