直入主题,我们在使用关系型数据库的时候基本上都会接触到事务处理,就是逻辑上的一组操作,组成这组操作的各个单元,要不全都成功要不全都失败,这就是关系行数据库的事务。
事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
redis的事务截然不同,它相对关系型数据库来说比较简单,它只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。使用redis事务时,客户端会发送MULTI命令开始一个事务,随后客户端发送的命令会放到一个队列中, 等最后客户端发送EXEC命令触发事务, 一并执行事务中的所有命令。
可以看到,执行完set完命令之后,反馈信息是QUEUED,最后再执行exec,这些命令才会真正的执行
事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。
虽说命令一定会被执行,但是成功还是失败又是另一回事了哈哈哈,下图举例:
嗯,没什么好说的,就是这样的,redsi事务也没有rollback,铭记。
最后这个厉害了啊。
WATCH
WATCH key [key ...]
监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
上面就是redis手册中关于watch的解释,使用起来貌似很简单,就是我在multi之前,用watch去监视我要修改的key,如果说我在exec之前,
multi之后的这段时间,key被其他client修改,那么exec就会执行失败,返回(nil)
下图举例:
嗯,不管怎么样这个技能我是get到了。
哦忘了介绍命令:
最后说一句,夏天这个东西很快就来了减肥的要马甲线的抓紧了。