Mysql與Redis事務

Mysql事務ACID基於日誌sql

   AC:回滾日誌實現回滾(原子性)安全

      D:重作日誌實現持久化線程

      I:加鎖實現隔離級別  (MVVC無鎖機制也可實現可重複讀)日誌

      讀未提交
        存在問題:髒讀(外部select事務內部)
        解決方法:Update寫鎖(排它鎖),select不加鎖,提交事務才釋放
      不可重複讀
        存在問題:不可重複讀(外部update事務內部)
        解決方法:select讀鎖(共享鎖),Update寫鎖(排它鎖)提交事務才釋放
      可重複讀
        存在問題:幻讀(外部insert事務內部)
        解決方法:表鎖?
      串行化blog

  Mysql事務命令隊列

      start transaction;事務

      commit;
      rollback;
get

  JDBC的事務操做it

      con.setAutoCommit(false);
      st = con.createStatement();
      con.commit(); con.rollback();io

     

Redis事務基於隊列

  不提供回滾機制

  事務中的命令存在隊列中,一次性執行,不被打斷(串行化)

  只有當隊列中全部命令都依次執行完後才能獲得每一個結果的返回值

  watch(樂觀鎖機制):事務開啓前監視變量,若變量發生變化,則不開啓事務

    watch key

    val = get key

    val = 2 * val

    multi

    set key val

    exec

  實現線程安全的2倍乘。

相關文章
相關標籤/搜索