螺竹编程
发布于 2024-05-18 / 6 阅读
0

Redis核心概念:Redis事务

Redis支持分布式环境下的事务操作,其事务可以一次执行多个命令,事务中的所有命令都会序列化地顺序执行。

事务在执行过程中,不会被其他客户端发送来的命令请求打断。服务器在执行完事务中的所有命令之后,才会继续处理其他客户端的其他命令。

Redis的事务操作分为开启事务、命令入队列、执行事务三个阶段。

事务执行流程

  1. 事务开启:客户端执行Multi命令开启事务。

  2. 提交请求:客户端提交命令到事务。

  3. 任务入队列:Redis将客户端请求放入事务队列中等待执行。

  4. 入队状态反馈:服务器返回QURUD,表示命令已被放入事务队列。

  5. 执行命令:客户端通过Exec执行事务。

  6. 事务执行错误:在Redis事务中如果某条命令执行错误,则其他命令会继续执行,不会回滚。可以通过Watch监控事务执行的状态并处理命令执行错误的异常情况。

  7. 执行结果返回:服务器向客户端返回事务执行的结果。

Redis事务相关命令

Redis事务的相关命令有Multi、Exec、Discard、Watch和Unwatch:

命令

说明

Multi

标记一个事务块的开始

Exec

执行所有事务块内的命令

Discard

取消事务,放弃执行事务块内的所有命令

Watch

监视一个(或多个)key,如果事务执行之前这个(或这些)key被其他命令改动,那么事务将被打断

Unwatch

取消Watch命令对所有key的监视

Redis事务与ACID

一般来说,事务有ACID4个特性,分别是原子性、一致性、隔离性和持久性。

  • 原子性Atomic:Redis的事务是原子性的,所有的命令要么全部执行、要么全部不执行。

  • 一致性Consistency:Redis事务可以保证命令失败的情况下得以回滚,数据能恢复到执行前的样子,除非redis进程意外结束。

  • 隔离性Isolation:Redis事务具有隔离性,但是不具有结构化数据库中的隔离级别。

  • 持久性Durability:Redis事务不保证持久性,因为redis持久化策略中,不管是RDB还是AOF都是异步执行的。