事务的ACID性质
最近在讀黃健宏的《Redis設計與實現》,現在看到了事務這章,由于之前(上學)沒有好好整理過數據庫事務的四大性質,導致現在(工作)看到了就和第一次知道一樣((lll¬ω¬))。還是要把基礎打好,以后一定要多多整理基礎知識。
redis本質上也是一個數據庫,它在內存中以鍵值對的形式操作數據。所以與傳統的關系型數據庫還是有一定不同的,但在這里,我忽略具體機制的不同,只抽取事務這塊,對它的性質進行簡單的描述。
?
在傳統的關系型數據庫中,常常用ACID性質來檢驗事務功能的可靠性和安全性。
事務提供了一種將命令打包,然后一次性、有序地執行的機制。
1、原子性(Atomicity)
事務具有原子性指的是,數據庫將事務中的多個操作當作一個整體來執行,服務器要么執行事務中的所有操作,要么一個操作也不執行。
拿redis的事務功能來說,事務隊列中的命令要么全部執行,要么就一個都不執行,因此redis的事務是具有原子性的。
redis事務與傳統關系型數據庫事務的最大區別在于,redis不支持事務回滾機制,即使事務隊列中的某個命令在執行期間出現了錯誤,整個事務也會繼續執行下去,直到將事務隊列中的所有命令都執行完畢為止。
2、一致性(Consistency)
事務具有一致性指的是,如果數據庫在執行事務前是一致的,那么在執行事務后,無論事務是否執行成功,數據庫也應該是一致的。一致指的是數據符合數據庫本身的定義和要求,沒有包含非法或無效的錯誤數據。
3、隔離性(Isolation)
事務的隔離性指的是,即使數據庫中有多個事務并發地執行,各個事務之間也不會互相影響,并且在并發狀態下執行的事務和串行執行的事務產生的結果完全相同。
因為redis使用單線程的方式執行事務(以及事務隊列中的命令),并且服務器保證在執行事務期間不會對事務進行中斷,因此redis的事務總是以串行的方式運行的,并且事務也總是具有隔離性的。
4、耐久性(Durability)
事務的耐久性指的是,當一個事務執行完畢時,執行這個事務的結果已經被保存在永久性存儲介質中了,即使服務器在事務執行完畢后停機,執行事務所得的結果也不會丟失。
因為redis的事務不過是簡單地用隊列包裹起了一組redis命令,redis并沒有為命令提供額外的持久化功能,所以redis事務的耐久性由redis所使用的持久化模式決定(AOF&appendfsync=always可以實現事務持久化)。
轉載于:https://www.cnblogs.com/lj95/p/9516029.html
總結
- 上一篇: MySql 安装
- 下一篇: offsetLeft 、offsetWi