有幾個與 Redis 事務相關的命令:
multi:標記交易區塊的開始sexec:執行由多個發起的交易塊中的所有命令 multidiscard:取消交易,丟棄由multiwatch啟動的交易區塊內的所有命令:監控乙個或多個金鑰,如果這些金鑰在交易執行前被其他客戶端修改,則事務的執行將失敗unwatch: 取消所有監視命令來監控 Redis 事務中的金鑰,多個命令合併成乙個事務塊並按順序執行,來自其他客戶端的請求在執行過程中不會干擾 Redis 事務的執行。執行 exec 命令時,Redis 會將之前提交的事務中的所有命令執行到所有連線的客戶端。
Redis事務塊與傳統資料庫中的事務概念不同,redis事務塊本身並不能保證原子性,但經過特殊處理後,事務塊中的所有命令要麼執行,要麼不執行。
以下是與 Redis 事務相關的命令的一些示例:
1. 使用 multi 和 exec 命令提交乙個簡單的交易塊:
multiset key1 value1set key2 value2exec
這將導致兩個連續的 set 命令,這些命令被標記為事務塊,然後通過 exec 命令提交執行。
2. 使用 watch 命令監控按鍵並模擬 CAS(檢查和設定)行為
watch key1val1 = get key1val1 = val1 + 1multiset key1 val1exec
上面的操作用watch命令監控key1,然後對key1執行get操作,然後執行乙個加1操作,標記乙個交易塊並在其中執行乙個set操作,最後提交交易塊。
如果另乙個客戶端在操作過程中修改了 key1 的值,則事務塊的執行將失敗,並返回乙個空列表。
3. 使用discard命令取消交易區塊
multiset key3 value3discard
上述操作使用 multi 命令標記交易塊,然後使用 set 命令。 然後使用 discard 命令取消當前交易區塊,此時不會執行 set 命令,也不會設定 key3。