redis事务的简单介绍
所謂事務(wù)應(yīng)具有以下特效:原子性(Atomicity), 一致性(Consistency),隔離性(Isolation),持久性(Durability),簡稱ACID,但redis所提供的事務(wù)比較簡單,它通過MULTI、EXEC、DISCARD和WATCH等命令實現(xiàn)事務(wù)。
而Redis只支持簡單的事務(wù),將執(zhí)行命令放入隊列緩存,當(dāng)程序中有異?;蛎畛鲥e,執(zhí)行DISCARD清空緩存隊列不執(zhí)行隊列中命令,其事務(wù)過程有以下特點(diǎn):
事務(wù)是一個單獨(dú)的隔離操作:事務(wù)中的所有命令都會序列化、按順序地執(zhí)行。事務(wù)在執(zhí)行的過程中,不會被其他客戶端發(fā)送來的命令請求所打斷。
事務(wù)是一個泛原子操作(這里我以泛原子稱呼,在某些情況redis的事務(wù)不是原子性的,后續(xù)會說明):事務(wù)中的命令要么全部被執(zhí)行,要么全部都不執(zhí)行。
MULTI:開啟了一個事務(wù),將需要執(zhí)行的命令全部入隊列。
EXEC:觸發(fā)一個事務(wù),并且從隊列中取出命令依次執(zhí)行(先入隊列的命令先被執(zhí)行FIFO)
(1)、redis沒有回滾機(jī)制,因此執(zhí)行事務(wù)過程中出現(xiàn)錯誤時,需要使用者來處理
(2)、運(yùn)行過程中出現(xiàn)錯誤,正確的命令將會被執(zhí)行。
(3)、如果將要執(zhí)行的命令出現(xiàn)錯誤,那么所有的命令將都不會被執(zhí)行。
在MULTI執(zhí)行之前,使用WATCH命令監(jiān)控一個或多個key,如果key有發(fā)生變化,則事務(wù)不會被執(zhí)行。
WATCH key [key ...] ? #當(dāng)某個事務(wù)需要按條件執(zhí)行時,就要使用這個命令將給定的鍵設(shè)置為受監(jiān)控的
總結(jié)
以上是生活随笔為你收集整理的redis事务的简单介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GJB 软件质量保证计划(模板)
- 下一篇: 静默活体检测