Redis-事务
2021/8/28 19:06:37
本文主要是介绍Redis-事务,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
是什么
可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行执行而不会被其他命令插入,不许加塞。
常用命令
- MULTI
- EXEC
- DISCARD
- WATCH
五个case
-
正常执行
使用MULTI命令输入Redis事务。该命令始终以答复OK。此时,用户可以发出多个命令。Redis不会执行这些命令,而是将命令放入队列中。一旦调用EXEC,将执行所有命令。
> MULTI OK > INCR foo QUEUED > INCR bar QUEUED > EXEC 1) (integer) 1 2) (integer) 1
-
放弃事务
可以使用DISCARD来中止事务。在这种情况下,不执行任何命令,连接状态恢复为正常。
> SET foo 1 OK > MULTI OK > INCR foo QUEUED > DISCARD OK > GET foo "1"
-
全体连坐
命令无法进入加入到队列,执行exec命令后会终止所有命令
-
冤头债主
命令正常加入队列中,在exec命令执行后发生错误,会正常执行其他正确命令
-
watch监控
WATCH用于为Redis事务提供Check And Set(CAS)行为,防止加塞修改。
监控被watch的键,在exec命令之前任何一次修改了被监视的键,则整个事务中止。exec命令返回null
一旦执行exec命令,之前所加的监控锁都会被取消小总结:watch指令,类似于乐观锁,事务提交时如果Key的值已经被改变,整个事务便都不会执行。通过watch命令监控了多个Key其中任意有一个Key的值被修改,exec命令执行的事务都将被放弃。
三阶段
- 开启 通过MULTI开始一个事务
- 入队 将多个命令加入队列中
- 执行 通过EXEC命令触发事务
三特性
-
单独隔离操作
事务中的命令会序列化、按顺序地执行。事务执行过程不会被其他客户端命令打断
-
没有隔离级别概念
队列中的命令在exec事务触发之前不会被实际执行
-
不保证原子性
当命令成功被加入到队列之后,在exec命令触发事务之后发生执行失败,其他命令还是会正常执行,不会回滚。
这篇关于Redis-事务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-08阿里云Redis项目实战入门教程
- 2024-11-08阿里云Redis资料:新手入门与初级使用指南
- 2024-11-08阿里云Redis教程:新手入门及实用指南
- 2024-11-07阿里云Redis学习入门:新手必读指南
- 2024-11-07阿里云Redis学习入门:从零开始的操作指南
- 2024-11-07阿里云Redis学习:初学者指南
- 2024-11-06阿里云Redis入门教程:轻松搭建与使用指南
- 2024-11-02Redis项目实战:新手入门教程
- 2024-10-22Redis入门教程:轻松掌握数据存储与操作
- 2024-10-22Redis缓存入门教程:快速掌握Redis缓存基础知识