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