PHP中文网2017-04-25 09:06:06
Redis的原子性有兩點:
單一操作是原子性的
多個操作也支援事務,即原子性,透過MULTI
和EXEC
指令包起來
原子操作的意思就是要嘛成功執行要嘛失敗完全不執行。用現實中的轉帳比喻最形象,你轉帳要嘛成功,要嘛失敗錢不動,不存在你錢轉出去了,但收款方沒收到這種成功一半失敗一半的情況
第1點已經解答了
高洛峰2017-04-25 09:06:06
原子性(atomicity):一個事務是一個不可分割的最小工作單位,要么都成功要么都失敗。
原子操作是指你的一個業務邏輯必須是不可拆分的.比如你給別人轉錢,你的帳號扣錢,別人的帳號
增加錢,這個業務邏輯就是原子性的,這個操作就是原子操作,要嘛都成功要嘛都失敗。
Redis所有單一命令的執行都是原子性的。
redis 實現事務的原理
1. 批量操作在发送 EXEC 命令前被放入队列缓存
2. 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令都不会被执行
3. 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中