走进redis事务
听到事务,相比大家知道传统数据库事务,最重要的就是四原则:
- 原子性:要么全部成功,要么全部失败
- 隔离性:多个并发事务之间互相隔离
- 永久性:事务一旦提交,数据永久有效
- 一致性:事务执行之前和执行之后处于一致性状态
redis作为内存数据库,是否也支持事务?
答案是肯定的,但是redis的事务支持和传统数据库的支持是有一定的区别的;redis的事务支持是不具备上述的四个条件的,具体的我们在操作中见真知。
事务命令
- multi 开启事务
- exec 执行事务
- discard 取消事务
事务过程
- 开启事务
- 命令入队
- 执行事务
案例:
正常执行事务
放弃事务
事务错误
入队命令错误
当我们开启事务multi之后,输入的命令会进行入队操作,入队命名错误的时候,会实际报出来,提交事务的时候,也会失败,造成全部命令提交失败,数据更新失败。
入队命令正确,数据类型错误
这个错误和上面一个错误的区别在于入队是命令是正确的,但是操作的数据类型是错误的,比如说给一个字符串进行incr
操作等等;这种操作执行exec
之后,其他正确的操作会继续执行,但是出错的这个不会执行,这里就没有保证原子性;
总结
redis 事务也是开发和面试使用比较多的,需要我们好好掌握,最好能阅读下源码,看下具体实现的机制。
欢迎关注微信公众号:后台服务器开发