redis学习-事务
2021/9/18 19:08:51
本文主要是介绍redis学习-事务,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
事务
Redis事务本质:一组命令的集合,一个事务中的所有命令都会被序列化,在事务的执行过程中,会按照顺序执行
一次性,顺序性,排他性,执行一系列的命令
redis事务没有隔离级别的概念
所有的命令在事务中,并没有被直接执行,只有发起执行命令的时候才会执行!exec
redis单条命令是保证原子性的,但是事务不保证原子性
redis的事务*
* 开启事务(MULTI)
* 命令入队(....)
* 执行事务(exc)
127.0.0.1:6379> MULTI #开启事务 OK 127.0.0.1:6379(TX)> set k1 v1 #入队 QUEUED 127.0.0.1:6379(TX)> set k2 v2 QUEUED 127.0.0.1:6379(TX)> get k2 QUEUED 127.0.0.1:6379(TX)> set k3 k3 QUEUED 127.0.0.1:6379(TX)> exec #执行事务 1) OK 2) OK 3) "v2" 4) OK
放弃事务(DISCARD)
127.0.0.1:6379> MULTI OK 127.0.0.1:6379(TX)> set k1 v1 QUEUED 127.0.0.1:6379(TX)> set k4 v4 QUEUED 127.0.0.1:6379(TX)> DISCARD OK 127.0.0.1:6379> get k4 (nil)
异常
编译型异常(代码有问题,命令有错),事务所有命令都不会被执行
127.0.0.1:6379(TX)> set k1 v1 QUEUED 127.0.0.1:6379(TX)> set k5 v5 QUEUED 127.0.0.1:6379(TX)> getset k1 (error) ERR wrong number of arguments for 'getset' command 127.0.0.1:6379(TX)> exec (error) EXECABORT Transaction discarded because of previous errors.
运行时异常,如果事务队列中存在语法性,那么执行时,其它命令正常执行,错误命令抛出
127.0.0.1:6379> set k1 "asd" OK 127.0.0.1:6379> MULTI OK 127.0.0.1:6379(TX)> INCR k1 QUEUED 127.0.0.1:6379(TX)> set k2 v2 QUEUED 127.0.0.1:6379(TX)> get k2 QUEUED 127.0.0.1:6379(TX)> EXEC 1) (error) ERR value is not an integer or out of range 2) OK 3) "v2"
这篇关于redis学习-事务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24Redis资料:新手入门快速指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-07Redis高并发入门详解
- 2024-12-07Redis缓存入门:新手必读指南
- 2024-12-07Redis缓存入门:新手必读教程
- 2024-12-07Redis入门:新手必备的简单教程
- 2024-12-07Redis入门:新手必读的简单教程
- 2024-12-06Redis入门教程:从安装到基本操作
- 2024-12-06Redis缓存入门教程:轻松掌握缓存技巧