Redis事务

Redis事务

一.事务的四个特性

二.Redis的事务命令

三.Redis不支持回滚

一.事务的四个特性

1.1 隔离性:事务正在操作的数据,不会被其他事务修改

1.2 原子性:一组命名要么全部执行要么全部不执行

1.3 一致性:数据的每一次修改都会是数据库更改一次数据库状态;

读一致性:

两个事务在进行读操作时,基于同一个数据库状态(一般是最新的),不能基于多个。

写一致性:

一个状态下(一般是最新的),只能有一个事务在写。

1.4 持久性:数据在修改后应该被永久保存,一般需要备份和恢复机制来保证。

二.Redis的事务命令

2.1 MULTI
标记一个事务块的开始。事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。

2.2 DISCARD
取消事务,放弃执行事务块内的所有命令。

2.3 EXEC
执行所有事务块内的命令

2.4 WATCH
监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。

注意:在事务开始之前执行

2.5 UNWATCH
取消 WATCH 命令对所有 key 的监视。

注意:该命令在MULTI,DISCARD,EXEC之后的话均无效,只有紧跟WATCH之后才生效。

三.Redis不支持回滚

原因如下:

3.1 操作失败的原因只可能是语法错误或者错误的数据库类型操作,这些都是在开发层面能发现的问题不会进入到生产环境,因此不需要回滚。

3.2 Redis内部设计推崇简单和高性能,因此不需要回滚能力。

据实而说第一条说法感觉有点站不住脚,可以想象得到Redis操作失败的原因绝对不止语法层面的错误,特别是一些像依赖操作系统、文件系统的操作。第二条说法更实在,Redis的应用场景明显不是为了数据存储的高可靠而设计的,而是为了数据访问的高性能而设计,设计者为了简单性和高性能而部分放弃了原子性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值