在关系型数据库中的事务一定要满足原子性,一致性,隔离性和持久性4个特性;
但Redis中的事务却与pipeline批量命令操作更像....get key6
(nil)
127.0.0.1:6379> get key7
(nil)
127.0.0.1:6379>
5. watch:监控指定key(可多个)值变化
watch是乐观锁(CAS)机制...,根据key值是否变化,决定事务是否提交,间接解决事务原子性问题....> unwatch
OK
127.0.0.1:6379>
综上可见:
redis的事务本身并不是原子性,在使用时需要配合watch命令;
在命令出错情况下,事务是会回滚的;在命令参数出错时,事务是不会回滚的...,会继续执行后续命令;
因为lua脚本的原子性,redis事务也可以使用lua脚本代替.