redis如何保證原子性 redis原子的遞增一定能保證數(shù)據(jù)是一致的嗎?
redis原子的遞增一定能保證數(shù)據(jù)是一致的嗎?Redis的設(shè)計(jì)模式?jīng)Q定了incr操作既能滿足原子性,又能保證數(shù)據(jù)的一致性。原子性和一致性是數(shù)據(jù)庫事務(wù)中最常提到的概念,包括隔離和持久性。為什么數(shù)據(jù)庫事務(wù)
redis原子的遞增一定能保證數(shù)據(jù)是一致的嗎?
Redis的設(shè)計(jì)模式?jīng)Q定了incr操作既能滿足原子性,又能保證數(shù)據(jù)的一致性。
原子性和一致性是數(shù)據(jù)庫事務(wù)中最常提到的概念,包括隔離和持久性。為什么數(shù)據(jù)庫事務(wù)要同時(shí)滿足這四個(gè)特性,而redis卻不能?主要原因是它們的并發(fā)處理模式不同。
Redis使用IO多路復(fù)用模式,即多個(gè)網(wǎng)絡(luò)連接多路復(fù)用一個(gè)處理線程。在這種模式下,所有命令都按順序執(zhí)行,在多線程場(chǎng)景中沒有并發(fā)問題。同時(shí),命令的原子性確保操作要么完全執(zhí)行要么完全回滾。沒有第三種情況,保證了數(shù)據(jù)的一致性:其他命令只能在前一個(gè)命令執(zhí)行或失敗后執(zhí)行,并且數(shù)據(jù)狀態(tài)穩(wěn)定,必須是一致的。
redis為什么不支持回滾?
。很少有人知道redis也有“交易”的概念。
(原子性、一致性、隔離性、持久性)特性。
事務(wù)中涉及的多個(gè)命令之一的錯(cuò)誤不會(huì)影響其他命令的正常執(zhí)行。