六、Redis事務
-
Redis事務是一個單獨的隔離操作,事務中所有的命令都會序列化按照順序的執行,事務在執行過程中,不會被其他客戶端發送來的命令請求所打斷。
-
Redis事務的主要作用就是串聯多個命令防止其他的命令插隊。
1) 命令
-
Multi 組隊,Exec 執行, discard 取消
組隊階段出現錯誤,整個事務的語句都執行失敗,組隊期間沒有出現錯誤,執行期間出現錯誤,出現錯誤的語句執行失敗,其他語句執行成功。
2)悲觀鎖,樂觀鎖
-
悲觀鎖:一個線程操作數據時對數據上鎖,其他線程無法讀取,操作數據,多應用於傳統的關係型數據庫裏面。
-
樂觀鎖:去拿數據的時候不會上鎖,更新數據時會根據數據的版本號判斷一個在此期間是否有程序修改過數據,如果修改過不執行。 應用於多讀的應用類型。
3) WATCH 命令 UNWATCH 解除樂觀鎖,,解除時解除所有的樂觀鎖。
在執行multi之前,先執行watch key1 key2 ,可以監視一個或多個key,如果事務在執行之前這些key被其他命令修改過,那麼事務被打斷。watch命令之後,只有數據發送改變就執行失敗。
4)特性
-
單獨的隔離操作 事務中的所有命令都會序列化,按順序地執行,事務在執行的過程中,不會被其他客戶端發送來的命令請求所打斷。
-
沒有隔離級別的概念
-
不保證原子性 Redis同一個事務中如果有一條命令執行失敗,其後的命令仍然會被執行,沒有回滾。
七、 Redis 持久化
1)RDB(Redis DataBase)
在指定時間間隔內將內存中的數據集快照寫入磁盤,也就是行話將的Snapshot快照,它恢復時是將快照文件直接讀到內存裏。
優點:1,節省磁盤空間 2,恢復速度快
缺點:1,雖然redis在fork時使用了寫時拷貝技術,但是如果數據量龐大時還是比較 消耗性能。 2,在備份週期內一定間隔時間做一次備份,所以,如果Redis意外down掉的話,就是丟失最後一次快照後的所有修改。
2)AOF(Append Of File)
以日誌的形式來記錄每一個寫操作
優點:1, 備份機制更穩健,丟失數據概率更低。2,可讀的日誌文本,通過操作AOF穩健,可以處理誤操作。
缺點: 1,比起RDB佔用更多的磁盤空間。2, 每次讀寫都同步的話,有一定的性能壓力。3, 恢復備份速度要慢。 4, 存在個別Bug,造成恢復不能。