ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

redis学习-事务

2021-09-18 11:34:22  阅读:175  来源: 互联网

标签:事务 127.0 OK TX 0.1 redis 学习 6379 QUEUED


事务

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"

标签:事务,127.0,OK,TX,0.1,redis,学习,6379,QUEUED
来源: https://www.cnblogs.com/keacua/p/15307951.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有