走进redis事务

538 阅读2分钟

走进redis事务

听到事务,相比大家知道传统数据库事务,最重要的就是四原则:

  • 原子性:要么全部成功,要么全部失败

  • 隔离性:多个并发事务之间互相隔离

  • 永久性:事务一旦提交,数据永久有效

  • 一致性:事务执行之前和执行之后处于一致性状态

redis作为内存数据库,是否也支持事务?

答案是肯定的,但是redis的事务支持和传统数据库的支持是有一定的区别的;redis的事务支持是不具备上述的四个条件的,具体的我们在操作中见真知。

事务命令

  • multi 开启事务

  • exec 执行事务

  • discard 取消事务

事务过程

  • 开启事务

  • 命令入队

  • 执行事务

案例:

正常执行事务

放弃事务

事务错误

入队命令错误

当我们开启事务multi之后,输入的命令会进行入队操作,入队命名错误的时候,会实际报出来,提交事务的时候,也会失败,造成全部命令提交失败,数据更新失败。

入队命令正确,数据类型错误

这个错误和上面一个错误的区别在于入队是命令是正确的,但是操作的数据类型是错误的,比如说给一个字符串进行incr操作等等;这种操作执行exec之后,其他正确的操作会继续执行,但是出错的这个不会执行,这里就没有保证原子性;

总结

redis 事务也是开发和面试使用比较多的,需要我们好好掌握,最好能阅读下源码,看下具体实现的机制。

欢迎关注微信公众号:后台服务器开发