在 Redis 中,事務(Transaction)是一組命令的集合,可以作為一個單獨的操作來執行,保證這組命令要么全部執行成功,要么全部執行失敗,具有原子性。在 Redis 中,事務是通過 MULTI、EXEC、DISCARD 和 WATCH 這幾個命令來實現的。
Redis事務的基本流程如下:
- 使用 MULTI 命令標記事務的開始。
- 在 MULTI 和 EXEC 之間,逐個添加需要執行的命令。
- 使用 EXEC 命令提交事務,Redis 會執行事務中的所有命令。如果 EXEC 成功,則返回事務中所有命令的執行結果;如果其中有任何一個命令執行失敗,則整個事務會被回滾。
- 如果在 MULTI 和 EXEC 之間使用 DISCARD 命令取消事務,事務中的所有命令都不會被執行。
Redis事務的特點和要點:
- 原子性:Redis事務具有原子性,事務中的所有命令要么全部執行成功,要么全部失敗。
- 隔離性:Redis事務默認是串行執行的,即事務中的命令在執行期間不會被其他客戶端的命令打斷。
- 持久性:事務提交后的結果會被持久化到磁盤上,即使發生了斷電等異常情況,Redis也可以保證事務的執行結果不會丟失。
- WATCH命令:可以使用 WATCH 命令監視一個或多個鍵,如果在事務執行之前這些鍵被其他客戶端改動了,事務就不會被執行。
Watch監控的基本用法
- 使用 WATCH 命令可以監視一個或多個鍵,例如:WATCH key1 key2 key3。
- 在調用 MULTI 命令后,Redis 會開始監視這些鍵。
- 在執行 EXEC 命令前,通過調用 GET 或其他命令來檢查被 WATCH 的鍵是否被修改過。
- 如果被 WATCH 的鍵在執行 EXEC 命令前被修改,Redis 將取消該事務的執行,返回給調用方一個表示事務已中止的標識。
ps:以下是我整理的java面試資料,密碼是obht,感興趣的可以看看。最后,創作不易,覺得寫得不錯的可以點點關注!
鏈接:https://www.yuque.com/u39298356/uu4hxh?# 《Java面試寶典》?
????????