Redis事务机制!

Redis提供了MULTI,EXEC两个命令来完成事务。

  • 客户端使用一个命令MULTI开启事务。

  • 客户端把事务中本身要执行的具体操作(例如增删改数据)发送给服务器端,这些命令暂存到一个命令队列中,并不会立即执行。

  • 客户端向服务器端发送提交事务的命令EXEC,让数据库实际执行第二步中发送的具体操作。

原子性

命令入队时就报错,会放弃事务执行,保证原子性。

命令入队时没报错,实际执行时报错,不保证原子性。

  • EXEC命令执行时实例故障,如果开启AOF日志,可以保证原子性。

一致性

在命令执行错误或 Redis 发生故障的情况下,Redis 事务机制对一致性是有保证的。

隔离性

并发操作在 EXEC 命令前执行,此时,隔离性的保证要使用 WATCH 机制来实现,否则隔离性无法保证。

并发操作在 EXEC 命令后执行,此时,隔离性可以保证。

WATCH机制的作用:

在事务执行前,监控一个或多个键的值变化情况,当事务调用EXEC命令执行时,Watch机制会先检查监控的键是否被其他客户端修改了,如果修改了,就放弃事务执行,避免事务的隔离性被破坏。

持久性

不管 Redis 采用什么持久化模式,事务的持久性属性是得不到保证的。