redis事務執行的非原子性

2021-08-21 08:36:07 字數 703 閱讀 8456

單個 redis 命令的執行是原子性的,但 redis 沒有在事務上增加任何維持原子性的機制,所以 redis 事務的執行並不是原子性的。

事務可以理解為乙個打包的批量執行指令碼,但批量指令並非原子化的操作,中間某條指令的失敗不會導致前面已做指令的回滾,也不會造成後續的指令不做。

官網上的說明 from redis docs on transactions:

it's important to note that even when a command fails, all the other commands in the queue are processed – redis will not stop the processing of commands.

比如:

redis 127.0.0.1:7000> multi

okredis 127.0.0.1:7000> set a aaa

queued

redis 127.0.0.1:7000> set b bbb

queued

redis 127.0.0.1:7000> set c ccc

queued

redis 127.0.0.1:7000> exec

1) ok

2) ok

3) ok

如果在 set b bbb 處失敗,set a 已成功不會回滾,set c 還會繼續執行。

事務的原子性

a想要從自己的帳戶中轉1000塊錢到b的帳戶裡。那個從a開始轉帳,到轉帳結束的這乙個過程,稱之為乙個事務。在這個事務裡,要做如下操作 1.從a的帳戶中減去1000塊錢。如果a的帳戶原來有3000塊錢,現在就變成2000塊錢了。2.在b的帳戶裡加1000塊錢。如果b的帳戶如果原來有2000塊錢,現在則...

事務的原子性

事務的原子性指的是,事務中包含的程式作為系統的邏輯工作單位,它所做的對資料修改操作要麼全部執行,要麼完全不執行。這種特性稱為原子性。原子性的意義是資料庫系統的基礎。也許有的人想大多數程式設計師都沒有需求去寫要求超長時間高穩定性 高健壯性執行的程式。我想這是不負責任的想法。不管你寫的是動態 嵌入式控制...

mysql原子性 MySQL事務的原子性

一 事務的acid特性 1 原子性 2 一致性 3 隔離性 4 永續性 二 對於事務的原子性 a 我們知道事務中的操作要麼都做要麼都不做。對於這一點許多人有錯誤的理解,我們來看乙個例子 1 mysql select from t4 id name 1 a 2 b 3 c 3 rows in set ...