[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