精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SpringBoot強大的分布式鎖組件Lock4j,支持多種實現

開發 前端
lock4j是一個分布式鎖組件,其提供了多種不同的支持以滿足不同性能和環境的需求。底層通過Spring AOP技術實現,而該切面的優先級是最高的,也就是說當你的環境中有多個切面時(如:聲明式事務),也不會導致失效問題。

環境:SpringBoot3.2.5

1. 簡介

lock4j是一個分布式鎖組件,其提供了多種不同的支持以滿足不同性能和環境的需求。底層通過Spring AOP技術實現,而該切面的優先級是最高的,也就是說當你的環境中有多個切面時(如:聲明式事務),也不會導致失效問題。該組件具有如下2個特性:

  • 簡單易用,功能強大,擴展性強。
  • 支持redission,redisTemplate,zookeeper。可混用,支持擴展。

接下來將詳細介紹基于Redis的Lock4J使用。

2. 實戰案例

2.1 引入依賴

<properties>
  <lock4j.version>2.2.7</lock4j.version>
</properties>
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>lock4j-redis-template-spring-boot-starter</artifactId>
  <version>${lock4j.version}</version>
</dependency>

如果你想基于redisson或者是zookeeper實現,那么你只需要引入對應的包即可。

<!-- redisson -->
<artifactId>lock4j-redisson-spring-boot-starter</artifactId>
<!-- zookeeper -->
<artifactId>lock4j-zookeeper-spring-boot-starter</artifactId>
配置文件
spring:
  data:
    redis:
      timeout: 10000
      connectTimeout: 20000
      host: 127.0.0.1
      password: xxxooo
  #如果你是基于zookeeper實現,那么做如下配置
  coordinate:
    zookeeper:
      zkServers: 127.0.0.1:2181,...

進過以上的配置后接下來你就可以通過注解的方式使用分布式鎖了。

2.2 基本使用

@Service
public class StorageService {


  private final StorageRepository storageRepository ;
  public StorageService(StorageRepository storageRepository) {
    this.storageRepository = storageRepository ;
  }


  @Lock4j
  public void deductStorage(Long storageId, int count) {
    // TODO
  }
}

使用非常簡單,只需要在你需要上鎖的方法上添加@Lock4j注解即可。而這里將使用默認行為:默認獲取鎖超時3秒,30秒鎖過期。

自定義鎖key

在上面示例中沒有自定義@Lock4j注解的任何屬性;那么,將會使用默認的key生成方式,上面的代碼將生成如下key。

# 前綴 + ":" + 完全限定類名+方法名+# (這里的#是固定的,如果你自定義了key,會在后面繼續拼接)
lock4j:com.pack.test.lock4j.StorageServicedeductStorage#

當我們自定義了key后如下:

@Lock4j(key = "#storageId")
public void deductStorage(Long storageId, int count)

key支持Spring SpEL表達式,如上將生成如下的key

# 方法調用storageService.deductStorage(1, 2) ;
lock4j:com.pack.test.lock4j.StorageServicedeductStorage#1

你也可以不使用SpEL表達式。不使用SpEL表達式那么就需要使用如下語法

@Lock4j(keys = "'storageId'")
public void deductStorage(...) {}

沒有使用單引號程序將會報錯。

設置過期時間

默認獲取鎖超時3秒,30秒鎖過期,可以通過如下屬性配置過期時間

@Lock4j(keys = {"#storageId"}, expire = 3000, acquireTimeout = 3000)
public void deductStorage(Long storageId, int count) {}

expire: 鎖過期時間(毫秒);注:鎖過期時間必須要大于業務處理時間。acquireTimeout: 獲取鎖超時時間(毫秒)

以上是Lock4j的基本用法;下面將介紹Lock4j其它高級用法。

2.3 高級用法

全局統一配置

lock4j:
  acquire-timeout: 3000 
  expire: 30000
  primary-executor: com.baomidou.lock.executor.RedisTemplateLockExecutor
  lock-key-prefix: lock4j

primary-executor:配置加鎖的實現方式;默認順序是:
redisson > redisTemplate > zookeeper;如果你的環境中這3個都引入了,那么就是按照這個順序,因為定義他們時使用了@Order注解聲明順序。lock-key-prefix:#鎖前綴,如上面示例看到的lock4j為默認值。

自定義執行器(加鎖)

我們可以通過實現LockExecutor接口定義自己的加鎖實現,比如基于MySQL實現。如下:

@Component
public class JdbcLockExecutor implements LockExecutor<String> {


  private final JdbcTemplate jdbcTemplate ;
  public JdbcLockExecutor(JdbcTemplate jdbcTemplate) {
    this.jdbcTemplate = jdbcTemplate ;
  }
  @Override
  public String acquire(String lockKey, String lockValue, long expire, long acquireTimeout) {
    // TODO; 獲取鎖
    return null ;
  }
  @Override
  public boolean releaseLock(String key, String value, String lockInstance) {
    // TODO; 釋放鎖
    return false;
  }
}

注:這里必須要注冊為Spring Bean。否則將無法獲取。使用如下:

@Lock4j(executor = JdbcLockExecutor.class)
public void deductStorage(Long storageId, int count) {}

加鎖時會根據這里配置的executor Class對象獲取Spring容器對應的bean對象。

自定義key生成器

Lock4j默認的鎖key生成器為DefaultLockKeyBuilder,我們可以通過LockKeyBuilder接口實現自己的key生成方式

@Component
public class PackLockKeyBuilder implements LockKeyBuilder {


  @Override
  public String buildKey(MethodInvocation invocation, String[] definitionKeys) {
    // TODO; 生成key
    return null;
  }
}

注:這里也必須注冊為bean對象。使用如下:

@Lock4j(keyBuilderStrategy = PackLockKeyBuilder.class)
public void deductStorage(Long storageId, int count) {}

內部會通過你這里配置的Class對象獲取對應的Spring Bean實例對象。

自定義獲取鎖失敗策略

當獲取鎖失敗時如何進行處理?默認實現是DefaultLockFailureStrategy通過自定義LockFailureStrategy,實現自己的邏輯。與上面的套路一樣都需要注冊為bean。

@Component
public class PackLockFailureStrategy implements LockFailureStrategy {


  @Override
  public void onLockFailure(String key, Method method, Object[] arguments) {
    // TODO
  }
}

使用如下:

@Lock4j(failStrategy = PackLockFailureStrategy.class)
public void deductStorage(Long storageId, int count) {}

注:這里你也可以不指定failStrategy屬性,會自動從容器中查找對應的實現Bean。

非注解實現方式(手動加鎖/釋放鎖)

你也可以通過注入LockTemplate對象,由自己來完成加鎖和釋放鎖的動作。

private final LockTemplate lockTemplate ;
  public StorageService(LockTemplate lockTemplate) {
    this.lockTemplate = lockTemplate ;
  }
  public void deductStorage(Long storageId, int count) {
    String key = "xxxx" ;
    final LockInfo lockInfo = lockTemplate.lock(key, 30000L, 5000L, RedisTemplateLockExecutor.class);
    if (null == lockInfo) {
        throw new RuntimeException("業務處理中,請稍后再試") ;
    }
    // 獲取鎖成功,處理業務
    try {
        // TODO
    } finally {
        // 釋放鎖
        lockTemplate.releaseLock(lockInfo) ;
    }
  }
}

手動加鎖方式,一般適用于需要更細粒度控制鎖邊界,否則沒必要。

責任編輯:武曉燕 來源: Spring全家桶實戰案例源碼
相關推薦

2017-01-16 14:13:37

分布式數據庫

2018-04-03 16:24:34

分布式方式

2022-04-08 08:27:08

分布式鎖系統

2023-01-13 07:39:07

2024-11-28 15:11:28

2023-09-04 08:12:16

分布式鎖Springboot

2021-07-13 06:57:12

SpringbootAOP緩存

2019-06-19 15:40:06

分布式鎖RedisJava

2021-02-28 07:49:28

Zookeeper分布式

2017-04-13 10:51:09

Consul分布式

2019-02-26 09:51:52

分布式鎖RedisZookeeper

2021-10-25 10:21:59

ZK分布式鎖ZooKeeper

2023-08-21 19:10:34

Redis分布式

2022-01-06 10:58:07

Redis數據分布式鎖

2024-10-09 17:12:34

2018-04-09 09:15:32

數據庫DB分布式鎖

2022-10-27 10:44:14

分布式Zookeeper

2023-03-01 08:07:51

2023-09-13 09:52:14

分布式鎖Java

2023-08-27 22:13:59

Redisson分布式緩存
點贊
收藏

51CTO技術棧公眾號

免费亚洲电影在线| 成人在线免费看黄| 女人色偷偷aa久久天堂| 日韩免费视频线观看| 日本女人高潮视频| 精品国产免费无码久久久| 在线欧美日韩| 亚洲跨种族黑人xxx| 天天操天天爱天天爽| 日本a在线播放| 成人精品国产免费网站| 国产精品www网站| 黄色一级片中国| 国产91久久精品一区二区| 91精品欧美福利在线观看| 日本手机在线视频| 成人高清网站| 不卡的av中国片| 亚洲最大激情中文字幕| 国产精品6666| 午夜久久免费观看| 亚洲欧美国产高清va在线播| www.久久久久久久久久久| 老司机深夜福利在线观看| 国产精品美女www爽爽爽| 国产精品一区视频| 91精品中文字幕| 久久高清国产| 午夜精品福利视频| www.99re7| 成人免费电影网址| 亚洲国内高清视频| 色诱av手机版| 996久久国产精品线观看| 一本色道a无线码一区v| www.激情网| 久草资源在线观看| 国产精品视频一二三区| 蜜桃999成人看片在线观看| av中文字幕在线免费观看| 日韩国产高清在线| 日韩av男人的天堂| 在线观看 中文字幕| 91精品啪在线观看国产18| 亚洲天堂免费观看| 在线观看国产免费视频| 国内精品国产成人国产三级粉色| 6080国产精品一区二区| 国产精品系列在线| 欧美极品少妇xxxxⅹ免费视频 | 黄页视频在线91| 国产精品三级美女白浆呻吟| 日韩精品一区不卡| 久久一区二区三区四区五区| 欧洲成人在线视频| www.伊人久久| 午夜影院日韩| 国产va免费精品高清在线观看 | 亚洲电影av| 久久久久久久久久久免费精品| 欧美色图一区二区| 欧美日本不卡高清| 欧美国产日韩视频| 中日韩精品视频在线观看| 日韩视频免费| 日本欧美在线视频| 最新黄色网址在线观看| 久久精品久久精品| 91在线观看免费高清| 99草在线视频| 岛国一区二区在线观看| 国产日韩欧美亚洲一区| 少妇精品视频一区二区| 99re热这里只有精品免费视频 | 精品人妻一区二区乱码| 亚洲网一区二区三区| 亚洲精品久久久久| 日韩一级av毛片| 99精品网站| 欧美丰满片xxx777| 免费av网站在线| 蜜臀av一级做a爰片久久| 成人黄色生活片| 成人午夜视频一区二区播放| 91欧美激情一区二区三区成人| 午夜精品美女久久久久av福利| 蜜桃视频网站在线| 亚洲妇女屁股眼交7| 国产精品亚洲a| 四虎地址8848精品| 精品国产免费人成在线观看| 亚洲精品视频大全| 99久久99久久精品国产片桃花 | 国产亚洲自拍av| 久久精品系列| 91在线观看免费| 天堂а√在线8种子蜜桃视频 | 欧美精品一区二区精品网| 欲求不满的岳中文字幕| 色97色成人| 久久久久中文字幕| 中文字幕欧美人妻精品一区蜜臀 | 欧美亚洲禁片免费| 亚洲成人精品在线播放| 亚洲小说图片| 欧美日韩成人黄色| 久久久久久无码午夜精品直播| 精品一区二区久久| 久久偷窥视频| 亚洲h片在线看| 91福利精品第一导航| 国产sm在线观看| 精品黄色一级片| 性色av一区二区三区红粉影视| 夜夜嗨av禁果av粉嫩avhd| 成人18视频日本| 香蕉精品视频在线| 肉色欧美久久久久久久免费看| 日韩欧美视频在线| 国产又粗又长又黄的视频| 亚洲免费高清| 超碰国产精品久久国产精品99| 91精彩在线视频| 色综合网站在线| 亚洲成a人无码| 999视频精品| 国产精品久久久精品| 手机看片福利永久| 一区二区三区在线观看网站| 一级片视频免费观看| 亚洲天堂日韩在线| 91精品国产亚洲| 免费观看国产精品| 一区二区在线看| 男女视频在线观看网站| 日韩精品欧美| 国产精品高潮粉嫩av| 欧美套图亚洲一区| 婷婷综合在线观看| 人妻av一区二区| 亚洲激情另类| 国产麻豆乱码精品一区二区三区| 超碰个人在线| 日韩一区二区麻豆国产| 欧美性受xxxx黑人| 日本在线不卡视频| 日韩欧美精品一区二区| 亚洲成人av观看| 在线精品国产欧美| 伊人精品一区二区三区| 国产精品电影院| 精品久久久99| 欧美国产另类| 国产高清在线一区二区| aa视频在线观看| 亚洲精品美女久久久久| 在线天堂中文字幕| 久久精品亚洲乱码伦伦中文| 色婷婷综合久久久久中文字幕| 国产精品欧美在线观看| 国产精品av免费在线观看| jzzjzzjzz亚洲成熟少妇| 欧美婷婷六月丁香综合色| av在线播放中文字幕| 激情成人综合网| 日b视频免费观看| 欧美黑白配在线| 日本精品视频在线播放| 99se视频在线观看| 欧美日韩精品是欧美日韩精品| 香蕉成人在线视频| 国产精品综合网| 免费 成 人 黄 色| 红桃视频在线观看一区二区| 国产精品视频久久久久| caopon在线免费视频| 欧美精品一区二区三区四区| 国产精品熟女视频| 亚洲女性喷水在线观看一区| 88av在线播放| 久久精品国产亚洲一区二区三区| 少妇高潮大叫好爽喷水| 欧美综合自拍| 国产日韩欧美视频| 麻豆av在线免费观看| 亚洲男人天堂久| 国产探花精品一区二区| 精品高清美女精品国产区| 日韩视频在线观看免费视频| 国产成人av一区二区三区在线| 久久成人免费观看| 日本不卡高清| 国产欧美日本在线| 九九热这里有精品| 国模私拍视频一区| 五月天婷婷在线视频| 亚洲第一区在线| 一级黄色免费看| 欧美日韩亚洲精品内裤| 开心激情五月网| 91香蕉视频mp4| 久久久久亚洲av无码麻豆| 久久成人亚洲| 欧美黄色免费网址| av中字幕久久| 国产在线精品一区二区三区》| 农村妇女一区二区| 国产91对白在线播放| av在线官网| 国产一区二区三区在线视频| 欧美视频一二区| 717成人午夜免费福利电影| 男人天堂2024| 亚洲综合成人在线视频| а天堂中文在线资源| 91浏览器在线视频| 大桥未久恸哭の女教师| 国内久久婷婷综合| 天天爱天天操天天干| 国产一区二区你懂的| 欧美日韩中文字幕在线播放| 日韩欧美一区二区三区在线视频| 快播亚洲色图| 久久365资源| 99久久99| 日韩高清一区| 91免费国产视频| 久久久加勒比| 国产精品96久久久久久又黄又硬| 538视频在线| 欧美日韩999| 男男gaygays亚洲| 九九热这里只有精品免费看| 免费在线观看av网站| 中文字幕免费国产精品| 日韩精品系列| 精品一区二区三区四区在线| 色一情一乱一乱一区91av| 日韩欧美国产系列| 精品久久久免费视频| 欧美一区二区在线播放| 91国产免费视频| 欧美日韩国产区一| 中文字幕91爱爱| 欧美日韩国产在线播放网站| 在线播放国产一区| 欧美日韩另类国产亚洲欧美一级| 中文字幕在线视频免费| 欧美日本在线播放| 亚洲最大成人av| 欧美一级片免费看| 精品久久久无码中文字幕| 日韩一区国产二区欧美三区| 国产巨乳在线观看| 欧美一区二区三区四区视频| 精品国产乱码一区二区三| 精品精品国产高清a毛片牛牛 | 999这里只有精品| 欧美午夜激情小视频| youjizz在线视频| 欧洲一区二区三区在线| 在线视频 中文字幕| 欧美喷潮久久久xxxxx| 国产精品福利电影| 超碰在线成人| 色婷婷久久一区二区| 99中文字幕一区| 日韩在线不卡视频| 18av在线播放| 91精品国产91久久久| 三上悠亚激情av一区二区三区| 国产精品旅馆在线| 国产精品美女久久久久| 高清不卡日本v二区在线| 91成人噜噜噜在线播放| 久久久久久久久久久久久9999| 在线一级成人| 伊人婷婷久久| 韩国av一区| 北条麻妃在线视频| 九九精品视频在线观看| 欧美日韩xx| 色综合久久天天综线观看| 春色校园综合激情亚洲| 国产成人精品免费久久久久| 亚洲日韩中文字幕一区| 高清国产一区| 久久精品国产99久久| 99久热在线精品视频| 国产精品美女| 国产喷水theporn| 欧美精品尤物在线观看| 国产精品国语对白| 不卡一区视频| 久久精品午夜一区二区福利| 久久精品国产亚洲夜色av网站| 大荫蒂性生交片| 日韩综合在线视频| 波多野结衣电影免费观看| wwwwxxxxx欧美| 综合五月激情网| 色悠悠久久综合| 亚洲国产成人一区二区| 国产亚洲欧美视频| 国产高清在线a视频大全| 国产精品麻豆va在线播放| 国内精品麻豆美女在线播放视频| 亚洲一卡二卡三卡四卡无卡网站在线看| 激情一区二区| 亚洲精品成人在线播放| 久久免费看少妇高潮| 免费在线看黄网址| 欧美日韩国产片| 男操女在线观看| 国产69精品久久久久9999| 国产成人免费视频网站视频社区| 欧美日韩精品免费看| 黄色免费成人| 日批视频在线看| 国产精品九色蝌蚪自拍| jizz国产在线观看| 亚洲精品97久久| 污污的视频在线观看| 国产中文日韩欧美| 精品国产不卡| 黄色a级片免费| 99re8在线精品视频免费播放| 久久久久久久久毛片| 欧美区视频在线观看| 成人精品一区二区| 日韩暖暖在线视频| 亚洲老女人视频免费| 国产毛片视频网站| 成人免费黄色大片| 精品少妇久久久| 日韩欧美中文字幕制服| av免费在线网站| 亚洲自拍偷拍色片视频| 99久久久国产精品美女| 午夜免费高清视频| 久久久蜜桃精品| 一级片在线观看免费| 亚洲欧美日韩视频一区| 超碰aⅴ人人做人人爽欧美| 免费中文日韩| 免费视频一区二区三区在线观看| 欧美精品黑人猛交高潮| 疯狂欧美牲乱大交777| 日本福利在线观看| 日本成人激情视频| 欧洲激情视频| 日本三级黄色网址| 亚洲图片你懂的| 国产黄色高清视频| 久久久久久久成人| 日韩精品丝袜美腿| 妞干网在线免费视频| 久久九九99视频| 在线观看国产成人| www日韩欧美| 视频在线观看免费影院欧美meiju| 狠狠精品干练久久久无码中文字幕| 国产99久久久国产精品潘金网站| 国产精品二区一区二区aⅴ| 亚洲黄色www网站| 欧美黑人一区| 亚洲制服中文| 丁香另类激情小说| 国产精品一区无码| 色七七影院综合| 日韩三级av高清片| 日韩a∨精品日韩在线观看| 久久久国际精品| 亚洲熟妇无码久久精品| 欧美疯狂做受xxxx高潮| 欧亚精品一区| 性欧美1819| 亚洲一区中文在线| 青青草在线免费观看| 国产美女久久精品| 国产综合亚洲精品一区二| 黄色在线观看av| 777亚洲妇女| 国产精品一二三产区| 五月天综合网| 懂色av一区二区三区蜜臀| 成人免费毛片视频| 欧美成人免费va影院高清| 思热99re视热频这里只精品| av网站在线不卡| 午夜精品久久久久久久| 1区2区3区在线观看| 99视频日韩| 奇米888四色在线精品| 国产在线视频你懂的| 尤物精品国产第一福利三区| 99re8这里有精品热视频免费| 三级4级全黄60分钟| 亚洲精品国产视频| 国产九九在线|