版权声明:本文为博主原创文章,欢迎分享转载。 https://blog.csdn.net/qq_29897369/article/details/87907753
说起事务就不得不提数据库事务,比如mysql
mysql | redis | |
---|---|---|
开启事务 | start transaction | multi |
形式 | sql语句 | 普通命令 |
失败处理 | rollback 回滚 | discard 取消 |
成功 | commit | exec |
注: 在mutil后面的语句中, 语句出错可能有2种情况
1: 语法就有问题,
这种,exec时,报错, 所有语句得不到执行
2: 语法本身没错,但适用对象有问题. 比如 zadd 操作list对象
Exec之后,会执行正确的语句,并跳过有不适当的语句.
mysql 事务demo
SELECT *FROM tb_account
INSERT INTO tb_account VALUES(2,100,'YY');
START TRANSACTION;
UPDATE tb_account SET money = money - 100 WHERE id = 1;
ROLLBACK
redis 事务 demo
redis 锁机制–乐观锁
什么情景会出现锁机制呢?
当我们买票的时候 看到还剩一张 但是在点击购买的时候到 提交事务之间 别人已经提交成功购买成功。所以出现锁机制。
悲观锁
世界充满危险,肯定有人和我抢, 给 ticket上锁, 只有我能操作. [悲观锁]
乐观锁
没有那么人和我抢,因此,我只需要注意,有没有人更改票的值就可以了 [乐观锁]