久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Redis的事務及樂觀鎖的應用

      相信phper都或多或少知道事務,在一些場景中也會經(jīng)常用到事務。比如購買了一個產(chǎn)品,需要向訂單表插入一條數(shù)據(jù),還要修改用戶表的余額字段等等。這兩個操作必須是要么一起成功,要么都失敗,否則就會產(chǎn)生數(shù)據(jù)不一致的情況。

      Redis中也支持事務的特性。雖然沒有傳統(tǒng)關系型數(shù)據(jù)庫的事務功能那樣強大,但它的使用非常簡單。

      事務

      MULTI

      multi標志個一個事務的開始。隨后的指令將在執(zhí)行EXEC時作為一個原子執(zhí)行。

      DISCARD

      Discard 命令用于取消事務,放棄執(zhí)行事務塊內(nèi)的所有命令。

      EXEC

      exec命令用于執(zhí)行所有事務塊內(nèi)的命令

      介紹了上面三個命令后,我們來完成一個小功能,用戶關注:

      比如A用戶關注了B,那么需要在A的關注表中添加B,此外B的粉絲表中要添加A;這兩個操作要作為一個原子來執(zhí)行的。

      實現(xiàn)代碼如下:

      $redis->multi()     ->sadd('like:A', 'B')     ->sadd('fans:B', 'A')     ->exec();

      是不是使用起來非常簡單。

      樂觀鎖

      首先來介紹下什么是樂觀鎖,以及它對應的悲觀鎖。

      悲觀鎖:想法很悲觀啦,對自己的男朋友不放心,只要自己和男朋友在一起時,任何人都接觸不了他男朋友。Mysql中的行鎖、表鎖等,都屬于悲觀鎖。

      樂觀鎖:很樂觀很天真,對自己的男朋友放心,自己和男朋友在一起時,有其他朋友找她男朋友聊天時,她不會阻止。但每次兩人在一起時,她都會對男朋友的最近狀態(tài)做評定,判斷他是否有問題。沒有問題才會繼續(xù)和他在一起,否則就拜拜。

      下面有一個場景:Redis存放著token,但是這個token是要隔一段時間就需要更新的。悲觀鎖的作為是,修改前我就要將它鎖定,這個時候其他任何請求都不能修改他,直到我修改完成后,才會解除鎖定。樂觀鎖的作法則是,修改的時候不會鎖定,但修改前我會觀察它的狀態(tài),如果他沒有被修改,那么我就做修改,如果狀態(tài)改變了,那么我就不做修改的操作。、

      Redis中如何使用樂觀鎖的呢?

      Redis中提供了一個命令Watch,標記所有指定的key 被監(jiān)視起來,在事務中有條件的執(zhí)行。

      下面是偽代碼:

      $redis->watch('token');  $redis->multi()     ->set('token','sfwefawfwefa323')     ->exec();

      樂觀鎖和悲觀鎖都有自己的使用場景,大家可以自行查閱相關信息,這里就不多贅述了。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號