ICode9

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

redis 事务机制

2022-01-03 20:02:50  阅读:152  来源: 互联网

标签:事务 127.0 TX 0.1 redis 6379 set 机制


redis事务有三个特性:
1、一次性。一个事务只会执行一次,执行完毕事务就不存在了(个人理解,有误望指正)。
2、顺序性。命令的执行顺序和入队顺序一致。
3、排他性。事务执行时不会被其它事务打断。

重点:redis事务不保证原子性,具体下面会讲。

127.0.0.1:6379> multi//开启事务
OK
127.0.0.1:6379(TX)> set name yqs
QUEUED
127.0.0.1:6379(TX)> set age 21
QUEUED
127.0.0.1:6379(TX)> set salary 99999999
QUEUED
127.0.0.1:6379(TX)> get age
QUEUED
127.0.0.1:6379(TX)> exec//执行事务
1 ) OK
2 ) OK
3 ) OK
4 ) “21”
127.0.0.1:6379> multi//开启新的一个事务
OK
127.0.0.1:6379(TX)> set number 50
QUEUED
127.0.0.1:6379(TX)> get name
QUEUED
127.0.0.1:6379(TX)> discard//放弃事务
OK
127.0.0.1:6379> keys *//查看所有key,发现number并不在里面,说明第二个事务确实被放弃了,没有执行
1 ) “salary”
2 ) “name”
3 ) “age”

注意点:
1、如果事务中有编译型错误(语法错误),那么在exec时整个事务会被放弃,并报错。
比如:
multi
set k1
set k2 v2
exec
由于第一个命令语法格式不对,所以会导致整个事务不被执行。

2、如果事务中有运行时错误(即没法静态检查出来的错误),那么在exec时有运行错误的那一行不会被执行,其它都正常执行。
比如:
multi
set s hello
incr s
set name yqs
get nage
exec
这时候4句命令都没有任何语法错误的,但是由于s不是纯数字字符串,所以在进行自增时会报一个运行时错误,那么s自增这个命令就会被放弃执行,但是其余3句命令都会正常运行。所以我们说redis的事务并没有原子性,因为他不会保证要么全执行,要么全不执行。

标签:事务,127.0,TX,0.1,redis,6379,set,机制
来源: https://blog.csdn.net/qq_31618549/article/details/122291112

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

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

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

ICode9版权所有