Redis事务
将一套redis指令集合作为一个整体的事务,按照顺序将事务进行执行而不会被打断
multi
(启动一个事务)
exec
(结束一个事务)
discard
(丢弃一个事务)
watch
(监控一个key)
unwatch
(取消对某一个key的监控)
Redis的事务的具体
- Redis
没有隔离级别
的概念- Redis是
单线程
,串型化
的执行事务- Redis是
原子性
的,不能保证指令的同时成功或同时失败,只有决定是否开启执行全部指令的功能,没有执行到一半而进行回滚的操作- Redis事务中的指令是放在一个
队列
里面顺序,排他性
的执行
Redis事务中执行出错
- 在一个事务中如果出现了语法错误,整个事务就失效了
- 如果对一个错误类型使用了一个正确的命令,只有该指令不会被执行,而其他指令还是会被执行
watch:
如果在一个客户端里面对一个key进行了监控并在一个事务里面了(不允许正在被watch的对象,被别人使用)
此时有另一个客户端对该key值进行了修改,在watched的客户端中将事务进行提交,就会返回一个nil(整个事务都会被中断)
- exec执行之后,之前watch的对象都会被unwatch