說起事務就不得不提數據庫事務,比如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上鎖, 只有我能操作. [悲觀鎖]
樂觀鎖
沒有那麼人和我搶,因此,我只需要注意,有沒有人更改票的值就可以了 [樂觀鎖]