在关系型数据库中的事务一定要满足原子性,一致性,隔离性和持久性4个特性;
但Redis中的事务却与pipeline批量命令操作更像....根据key值是否变化,决定事务是否提交,间接解决事务原子性问题....:6379>
在第一个客户端继续执行exec命令,整体事务因为key1值的变化不能正常执行;
保证了事务的原子性.
127.0.0.1:6379> exec
(nil)
127.0.0.1:6379>...命令;
在命令出错情况下,事务是会回滚的;在命令参数出错时,事务是不会回滚的,会继续执行后续命令;
因为lua脚本的原子性,redis事务也可以使用lua脚本代替....与pipeline类似,都是命令的批量操作,但pipeline关注的是减少RTT时间,而事务关注的是一致性,从性能上来说pipeline性能更高些;
在集群环境中执行时,数据不一定都在一台服务器中,很容易造成分布式事务不一致