一頭坑進Redis之事務

來源:互聯網
上載者:User

一.是什麼

    可以一次執行多個命令,本質是一組命令的集合。一個事務中的所有命令都會序列化,按順序地序列化執行而不會被其它命令插入,不許加塞

二.能幹嘛

    一個隊列中,一次性、順序性、排他性的執行一系列命令

三.怎麼玩

    常用命令

1:正常執行

2:放棄事務

3:全體連坐

Case4:冤頭債主


Case5:watch監控

    (1)悲觀鎖/樂觀鎖/CAS(Check And Set)    (2)Watch指令,類似樂觀鎖,事務提交時,如果Key的值已被別的用戶端改變,比如某個list已被別的用戶端push/pop過了,整個事務隊列都不會被執行    (3)通過WATCH命令在事務執行之前監控了多個Keys,倘若在WATCH之後有任何Key的值發生了變化,EXEC命令執行的事務都將被放棄,同時返回Nullmulti-bulk應答以通知調用者事務執行失敗  悲觀鎖(Pessimistic Lock), 顧名思義,就是很悲觀,每次去拿資料的時候都認為別人會修改,所以每次在拿資料的時候都會上鎖,這樣別人想拿這個資料就會block直到它拿到鎖。傳統的關係型資料庫裡邊就用到了很多這種鎖機制,比如行鎖,表鎖等,讀鎖,寫鎖等,都是在做操作之前先上鎖 樂觀鎖(Optimistic Lock), 顧名思義,就是很樂觀,每次去拿資料的時候都認為別人不會修改,所以不會上鎖,但是在更新的時候會判斷一下在此期間別人有沒有去更新這個資料,可以使用版本號碼等機制。樂觀鎖適用於多讀的應用類型,這樣可以提高輸送量,樂觀鎖策略:提交版本必須大於記錄目前的版本才能執行更新

3階段:

    1.開啟:以MULTI開始一個事務    2.入隊:將多個命令入隊到事務中,接到這些命令並不會立即執行,而是放到等待執行的事務隊列裡面    3.執行:由EXEC命令觸發事務

3特性:

    1.單獨的隔離操作:事務中的所有命令都會序列化、按順序地執行。事務在執行的過程中,不會被其他用戶端發送來的命令請求所打斷。    2.沒有隔離等級的概念:隊列中的命令沒有提交之前都不會實際的被執行,因為事務提交前任何指令都不會被實際執行,也就不存在”事務內的查詢要看到事務裡的更新,在事務外查詢不能看到”這個讓人萬分頭痛的問題    3.不保證原子性:redis同一個事務中如果有一條命令執行失敗,其後的命令仍然會被執行,沒有復原
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.