当前位置: 首页 > 科技观察

一篇文章带你彻底了解Redis事务

时间:2023-03-12 07:34:51 科技观察

Redis事务介绍Redis只提供简单的事务功能。它的本质是一组命令。事务支持一次执行多个命令。一个事务执行过程中,队列中的命令会依次执行,其他客户端提交的命令请求不会插入到本次事务的执行命令序列中。命令的执行过程是顺序执行的,但是不能保证原子性。没有MySQL那样的隔离级别,也没有出现问题后回滚数据等高级操作。后面会详细分析。Redis事务基本指令Redis提供了以下与事务相关的基本指令。当MULTI启动一个事务时,Redis会将后续命令添加到队列中,而不会真正执行它们,直到使用EXEC以原子顺序执行这些命令。EXEC执行事务块中的所有命令。DISCARD取消交易,放弃交易块中所有命令的执行。命令WATCH监视一个或多个键。如果在事务执行前这些键被其他命令修改,则事务将终止,事务中的任何命令都不会执行。UNWATCH通过WATCH命令取消对所有按键的监听。一般来说,一个简单的Redis事务主要分为以下几个部分:执行命令MULTI来启动一个事务。事务启动后,执行该命令的多个命令会被一个一个放入一个队列中,放入成功则返回QUEUED消息。执行命令EXEC提交事务,Redis会依次执行队列中的命令,并依次返回所有命令的结果。(如果想放弃提交事务,执行DISCARD)。下图简单介绍了Redis事务执行的过程:实例分析下面通过一些实际的例子来感受一下Redis中的事务。前面我们也提到,Redis事务不是真正的事务,不能完全满足标准事务的ACID特性。通过下面的例子,我们来看看Redis的“破产版”事务到底出了什么问题。[A]正常执行commit?