Redis学习记录
Redis事务的本质:redis事务是一组命令的集合,一个事务中的所有命令都将被序列化,按照顺序执行,一次性、顺序性、排他性的执行一系列的命令。
redis事务不保证原子性
redis事务:
1.开启事务 (使用mulit命令开始一个事务)
2.命令入队(开启事务后,每次执行的命令都会被加入一个队列中,这时候命令并不会真的执行)
3.执行事务(使用exec命令)
放弃事务的命令 : discard
事务中的命令都不会被执行
事务的原子性是指:事务中包括的所有操作要么都做,要么都不做
在redis中当开启事务后
1. 如果向对列中添加的命令语法存在异常,那么事务中的所有操作都不会被执行
2. 如果向队列中添加的命令语法正常,但是运行时发现错误,那么事务提交的时候,除了该命令外,其他命令都将正常执行
所以redis事务不保证原子性
redis的watch命令
Watch 命令用于监视一个(或多个) key ,如果在事务执行之前这个key 被其他命令所改动,那么事务将被打断。可以实现乐观锁