Redis事务机制!
Redis事务机制!
月伴飞鱼Redis提供了MULTI,EXEC两个命令来完成事务。
客户端使用一个命令MULTI开启事务。
客户端把事务中本身要执行的具体操作(例如增删改数据)发送给服务器端,这些命令暂存到一个命令队列中,并不会立即执行。
客户端向服务器端发送提交事务的命令EXEC,让数据库实际执行第二步中发送的具体操作。
原子性
命令入队时就报错,会放弃事务执行,保证原子性。
命令入队时没报错,实际执行时报错,不保证原子性。
- EXEC命令执行时实例故障,如果开启AOF日志,可以保证原子性。
一致性
在命令执行错误或 Redis 发生故障的情况下,Redis 事务机制对一致性是有保证的。
隔离性
并发操作在 EXEC 命令前执行,此时,隔离性的保证要使用 WATCH 机制来实现,否则隔离性无法保证。
并发操作在 EXEC 命令后执行,此时,隔离性可以保证。
WATCH机制的作用:
在事务执行前,监控一个或多个键的值变化情况,当事务调用EXEC命令执行时,Watch机制会先检查监控的键是否被其他客户端修改了,如果修改了,就放弃事务执行,避免事务的隔离性被破坏。
持久性
不管 Redis 采用什么持久化模式,事务的持久性属性是得不到保证的。