亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Redis > 正文

redis鎖機制介紹與實例

2020-10-28 21:31:16
字體:
來源:轉載
供稿:網友

1 悲觀鎖

執行操作前假設當前的操作肯定(或有很大幾率)會被打斷(悲觀)?;谶@個假設,我們在做操作前就會把相關資源鎖定,不允許自己執行期間有其他操作干擾。

Redis不支持悲觀鎖。Redis作為緩存服務器使用時,以讀操作為主,很少寫操作,相應的操作被打斷的幾率較少。不采用悲觀鎖是為了防止降低性能。

2 樂觀鎖

執行操作前假設當前操作不會被打斷(樂觀)?;谶@個假設,我們在做操作前不會鎖定資源,萬一發生了其他操作的干擾,那么本次操作將被放棄。

3. Redis中的鎖策略

Redis采用了樂觀鎖策略(通過watch操作)。樂觀鎖支持讀操作,適用于多讀少寫的情況!
在事務中,可以通過watch命令來加鎖;使用 UNWATCH可以取消加鎖;
如果在事務之前,執行了WATCH(加鎖),那么執行EXEC 命令或 DISCARD 命令后,鎖對自動釋放,即不需要再執行 UNWATCH 了

例子

redis鎖工具類

package com.fly.lock;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;public class RedisLock {  //初始化redis池  private static JedisPoolConfig config;  private static JedisPool pool;  static {    config = new JedisPoolConfig();    config.setMaxTotal(30);    config.setMaxIdle(10);    pool = new JedisPool(config, "192.168.233.200", 6379);  }  /**   * 給target上鎖   * @param target   **/  public static void lock(Object target) {    //獲取jedis    Jedis jedis = pool.getResource();    //result接收setnx的返回值,初始值為0    Long result= 0L;    while (result < 1) {      //如果target在redis中已經存在,則返回0;否則,在redis中設置target鍵值對,并返回1      result = jedis.setnx(target.getClass().getName() + target.hashCode(), Thread.currentThread().getName());    }    jedis.close();  }  /**   * 給target解鎖   * @param target   **/  public static void unLock(Object target) {    Jedis jedis = pool.getResource();    //刪除redis中target對象的鍵值對    Long del = jedis.del(target.getClass().getName() + target.hashCode());    jedis.close();  }  /**   * 嘗試給target上鎖,如果鎖成功返回true,如果鎖失敗返回false   * @param target   * @return   **/  public static boolean tryLock(Object target) {    Jedis jedis = pool.getResource();    Long row = jedis.setnx(target.getClass().getName() + target.hashCode(), "true");    jedis.close();    if (row > 0) {      return true;    }    return false;  }}

測試類

package com.fly.test;import com.fly.lock.RedisLock;class Task {  public void doTask() {    //上鎖    RedisLock.lock(this);    System.out.println("當前線程: " + Thread.currentThread().getName());    System.out.println("開始執行: " + this.hashCode());    try {      System.out.println("doing...");      Thread.sleep(2000);    } catch (InterruptedException e) {      e.printStackTrace();    }    System.out.println("完成: " + this.hashCode());    //解鎖    RedisLock.unLock(this);  }}public class Demo {  public static void main(String[] args) {    Task task = new Task();    Thread[] threads = new Thread[5];    for (Thread thread : threads) {      thread = new Thread(()->{        task.doTask();      });      thread.start();    }  }}

輸出結果:

----------------------------------------------
當前線程: Thread-0
開始執行: 2081499965
doing...
完成: 2081499965
----------------------------------------------
當前線程: Thread-2
開始執行: 2081499965
doing...
完成: 2081499965
----------------------------------------------
當前線程: Thread-1
開始執行: 2081499965
doing...
完成: 2081499965
----------------------------------------------
當前線程: Thread-4
開始執行: 2081499965
doing...
完成: 2081499965
----------------------------------------------
當前線程: Thread-3
開始執行: 2081499965
doing...
完成: 2081499965

去掉redis鎖后,執行結果:

----------------------------------------------
----------------------------------------------
當前線程: Thread-2
開始執行: 1926683415
----------------------------------------------
當前線程: Thread-1
doing...
當前線程: Thread-0
----------------------------------------------
當前線程: Thread-3
開始執行: 1926683415
doing...
開始執行: 1926683415
doing...
----------------------------------------------
開始執行: 1926683415
doing...
當前線程: Thread-4
開始執行: 1926683415
doing...
完成: 1926683415
完成: 1926683415
完成: 1926683415
完成: 1926683415
完成: 1926683415

Process finished with exit code 0

利用redis這個性質,可以實現分布式鎖,當然設計一定復雜一些!

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。如果你想了解更多相關內容請查看下面相關鏈接

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品视频在线导航| 色阁综合伊人av| 国产精品爽爽ⅴa在线观看| 国内精品400部情侣激情| 欧美xxxx18国产| 欧美国产第二页| 国内精久久久久久久久久人| 精品国产视频在线| 九色精品美女在线| 久久久人成影片一区二区三区| 久久免费视频观看| 欧美成人国产va精品日本一级| 久久免费少妇高潮久久精品99| 视频在线观看一区二区| 日本a级片电影一区二区| 久久综合88中文色鬼| 91高清视频免费观看| 国产成人精品av在线| 精品成人乱色一区二区| 国产精品扒开腿做爽爽爽的视频| 欧美一级bbbbb性bbbb喷潮片| 91久久精品国产91性色| 色妞在线综合亚洲欧美| 亚洲欧洲美洲在线综合| 亚洲成人动漫在线播放| 欧美大尺度电影在线观看| 亚洲va国产va天堂va久久| 欧美久久精品一级黑人c片| 亚洲а∨天堂久久精品9966| 久久精品国产91精品亚洲| 91在线免费网站| 欧美性极品少妇精品网站| 亚洲影院色在线观看免费| 都市激情亚洲色图| 亚洲国产精品字幕| 亚洲色图狂野欧美| 亚洲人成网站免费播放| 欧美国产视频日韩| 精品在线欧美视频| 亚洲第一男人天堂| 丝袜美腿亚洲一区二区| 欧美国产日产韩国视频| 高清亚洲成在人网站天堂| 成人疯狂猛交xxx| 91社区国产高清| 亚洲va久久久噜噜噜久久天堂| 久久久女人电视剧免费播放下载| 国产精品女主播视频| 日韩高清欧美高清| 色综合色综合久久综合频道88| 欧美精品18videos性欧美| 久久99热精品这里久久精品| 亚洲精品美女网站| 国产精品最新在线观看| 日韩av免费在线播放| 青青精品视频播放| 亚洲欧洲美洲在线综合| 日韩av片永久免费网站| 91久久精品在线| 日韩a**中文字幕| 亚洲国产精品久久久久久| 亚洲韩国青草视频| 91精品国产99久久久久久| 久久影院免费观看| 精品久久久在线观看| 伊人久久久久久久久久| www.亚洲一二| 欧美性猛交xxx| 亚洲香蕉成视频在线观看| 日韩毛片在线观看| 久久99国产精品自在自在app| 黑人巨大精品欧美一区二区一视频| 亚洲欧美一区二区三区在线| 国产精品亚洲片夜色在线| 国产精品福利网站| 日韩av免费看网站| 国产日韩在线观看av| 精品综合久久久久久97| 久久好看免费视频| 国产欧美日韩精品在线观看| 国产97人人超碰caoprom| 精品国产精品三级精品av网址| 欧美肥臀大乳一区二区免费视频| 97视频在线观看视频免费视频| 国产成人综合av| 欧美黑人一区二区三区| 欧美美女操人视频| 国产亚洲精品日韩| 日韩av黄色在线观看| 亚洲第一网中文字幕| 不卡av在线播放| 国产美女扒开尿口久久久| 欧美日韩黄色大片| 亚洲精美色品网站| 国产精品香蕉国产| 欧美有码在线视频| 久久电影一区二区| 亚洲国产精品久久久久秋霞不卡| 色婷婷av一区二区三区在线观看| 欧美视频免费在线观看| 性日韩欧美在线视频| 91天堂在线观看| 中文字幕亚洲一区在线观看| 57pao国产精品一区| 国产丝袜一区视频在线观看| 日韩影视在线观看| 亚洲一区免费网站| 中文字幕日韩av综合精品| 色狠狠久久aa北条麻妃| www.亚洲一区| 亚洲欧洲免费视频| 亚洲美女在线观看| 成人伊人精品色xxxx视频| 日韩视频免费在线| 日日狠狠久久偷偷四色综合免费| 国产不卡精品视男人的天堂| 日韩大陆欧美高清视频区| 91免费高清视频| 92看片淫黄大片看国产片| 九九热这里只有精品免费看| 在线观看91久久久久久| 国产精品爽爽ⅴa在线观看| 色综合天天狠天天透天天伊人| 欧美性猛交xxxx免费看漫画| 国产亚洲视频在线| 日韩中文字幕在线| 国内免费久久久久久久久久久| 91精品国产91久久久久久最新| 自拍偷拍亚洲区| 欧美精品videosex牲欧美| 日韩视频在线一区| 欧美乱大交xxxxx另类电影| 91国产视频在线播放| 欧美黑人狂野猛交老妇| 欧美中文字幕在线视频| 日韩亚洲精品电影| 中文在线资源观看视频网站免费不卡| 亚洲一级黄色av| 欧美裸体xxxxx| 欧美精品videosex性欧美| 亚洲裸体xxxx| 555www成人网| 国产99久久久欧美黑人| 91九色在线视频| 最近2019好看的中文字幕免费| 一本色道久久综合狠狠躁篇的优点| 精品久久久视频| 亚洲国产精品热久久| 亚洲美女久久久| 亚洲乱亚洲乱妇无码| 91精品免费视频| 日韩电影中文字幕一区| 欧美日韩中文字幕| 亚洲精品少妇网址| 精品国产拍在线观看| 国产成人精品视| 久久久久久久久久国产| 亚洲精品视频在线观看视频| 欧美精品成人91久久久久久久| 久久久久久亚洲精品中文字幕| 欧美日韩亚洲系列| 精品五月天久久| 久久亚洲精品国产亚洲老地址| 日韩欧美视频一区二区三区|