springboot中使用redis事務

2021-10-19 16:30:32 字數 1597 閱讀 9168

目錄前言

**演示

1.redisservice 工具類中增加三個方法

2.測試類中新增測試方法

/**

* 開啟事務

* @return

*/public transaction multi()

/*** 執行事務

* @param jedistransaction

*/public void exec(transaction jedistransaction)

/*** 取消事務中的命令-回滾事務

* @param jedistransaction

*/public void discard(transaction jedistransaction)

在redis事務及事務回滾機制中說到redis的事務回滾分為兩種情況:

redis事務遇到的命令格式正確而資料型別不符合時,其之前和之後的命令都會被正常執行。

redis事務遇到的命令格式是錯誤的,無論之前和之後的命令都會被事務所回滾,就變為什麼都沒有執行。

先測試下第一種情況--redis 事務遇到的命令格式正確而資料型別不符合

@test

public void multi()

執行後檢視redis中的資料如圖:

可以看到雖然在執行tr.incr("a")命令時會因為資料型別錯誤執行失敗,但是redis服務中依然存在了abc三個鍵,說明tr.incr("a")命令之前和之後的命令還會正常執行。

這裡注意,在使用multi開啟事務後,新增命令不能使用jedis相關的命令進行操作,而應該使用transaction相關的方法進行操作,看下jedis的incr方法原始碼,首先會執行this.checkisinmultiorpipeline();

再看下它的原始碼,

可以看到,如果使用jedis相關命令進行操作會報錯。

先測試下第一種情況--redis 命令格式是錯誤

命令格式錯誤沒法向在redis-cli中一樣去模擬,如果**直接寫乙個錯誤的命令連編譯都通過不了,上面提到在事務中運算元據要是要transaction相關的命令,那我們就使用jedis相關命令去操作,製造乙個錯誤,**如下:

@test

public void multi1()

執行後發現redis服務中儲存資料為空,說明之前和之後的命令都沒有執行。

至於回滾就不貼**了,感興趣自己試下吧。

Spring Boot中使用MongoDB資料庫

前段時間分享了關於spring boot中使用redis的文章,除了redis之後,我們在網際網路產品中還經常會用到另外一款著名的nosql資料庫mongodb。下面就來簡單介紹一下mongodb,並且通過乙個例子來介紹spring boot中對mongodb訪問的配置和使用。mongodb是乙個基...

Spring Boot中使用MongoDB資料庫

前段時間分享了關於spring boot中使用redis的文章,除了redis之後,我們在網際網路產品中還經常會用到另外一款著名的nosql資料庫mongodb。下面就來簡單介紹一下mongodb,並且通過乙個例子來介紹spring boot中對mongodb訪問的配置和使用。mongodb是乙個基...

SpringBoot中使用日誌

結果 所有配置檔案都會被載入,高優先順序的配置檔案會覆蓋低優先順序的配置檔案 springboot 底層是spring框架,spring框架預設是用jcl springboot選用slf4j和logback作為日誌框架 如何使用slf4j import org.slf4j.logger import...