[Redis] [Go] Send 不加 MULTI 會怎麼樣
做redis transaction 基本上先放MULTI,再SEND要操作的行為後,最後送出EXEC。
但SEND 本身是在做queue的動作,即使沒有先送MULTI,也是可以成功把做queue的指令丟給redis。
為了弄清楚差異,做了一點實驗,以下搭配GOlang。
實驗一:
說明:
將最後的EXEC註解掉,中間插個DO。
結果:
結果DO以前有寫入redis,DO以後的沒作用。
實驗二:
說明:
根據實驗一的基礎上,但最一開始有用MULTI包起來。
結果:
結果即使中間有DO,但都沒寫入redis(DO也沒寫入?)。
實驗三:
說明:
將實驗二最下面的EXEC註解打開。
結果:
通通寫入redis。
結論:
- 如果沒包MULTI,會因為有DO的指令,沒而被一起執行下去。
- 如果有包MULTI,因為MULTI會認EXEC,而導致中間的DO,被吃掉。
- 碰到EXEC,不管之前有包幾個MULTI,都會一併執行。
Created Date : 2018/08/16
Last Updated Date : 2018/08/16
留言
張貼留言