<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                # Redisson分布式鎖集成2.4+ >[info] 采用redisson實現分布式鎖,應用場景:秒殺、團購、購買火車票等系列高并發應用。 > 示例代碼:`jeecg-cloud-module\jeecg-cloud-test\jeecg-cloud-test-more` [TOC] ## 第一步. 引入分布式鎖依賴 ~~~ <!-- 引入分布式鎖依賴 --> <dependency> <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-boot-starter-lock</artifactId> </dependency> ~~~ ## 第二步. 編寫分布式鎖測試demo 通過jeecg自定義的注解 `@JLock` `@JRepeat` 來實現 ~~~ /** * 分布式鎖測試demo */ @Slf4j @Component public class DemoLockTest { @Autowired RedissonLockClient redissonLock; /** *注解方式測試分布式鎖 */ @Scheduled(cron = "0/5 * * * * ?") @JLock(lockKey= "redis-lock") public void execute() throws InterruptedException { log.info("執行execute任務開始,休眠三秒"); Thread.sleep(3000); System.out.println("=======================業務邏輯1============================="); log.info("execute任務結束,休眠三秒"); } /** * 編碼方式測試分布式鎖 */ @Scheduled(cron = "0/10 * * * * ?") public void execute2() throws InterruptedException { if (redissonLock.tryLock("redisson", -1, 10000)) { log.info("執行任務execute2開始,休眠三秒"); Thread.sleep(3000); System.out.println("=======================業務邏輯2============================="); log.info("定時execute2結束,休眠三秒"); redissonLock.unlock("redisson"); } else { log.info("execute2獲取鎖失敗"); } } } ~~~ ## 分布式鎖注解 `@JLock` 示例: ~~~ //lockKey支持spel表達式 @JLock(lockKey= "redis-lock") @JLock(lockKey="#user.name") @JLock(lockKey ={"#user.name","#user.id"}) ~~~ 參數說明: - [JLock 參數定義](https://gitee.com/jeecg//jeecg-boot-starter/blob/master/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/JLock.java) ## 防止重復提交的注解 `@JRepeat` 示例: ~~~ @JRepeat(lockKey = "#name", lockTime = 5) ~~~ 參數說明: - [JRepeat 參數定義](https://gitee.com/jeecg/jeecg-boot-starter/blob/master/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/JRepeat.java) ## 第三步. 分布式鎖redisson配置 分布式鎖配置在nacos中jeecg-dev.yaml里 ![](https://img.kancloud.cn/42/38/4238241fa3f1709eccab2bb07a3f558b_813x678.png) - address:連接地址和端口 - password:redis密碼 - type:redis部署方式 - enabled:是否啟用分布式鎖 支持單機、哨兵、集群、主從4中redis部署方式 ### 1單機配置示例 ~~~ redisson.address=127.0.0.1:6379 redisson.type=STANDALONE ~~~ ### 2 哨兵配置示例 **redisson.lock.server.address**格式為: sentinel.conf配置里的sentinel別名,sentinel1節點的服務IP和端口,sentinel2節點的服務IP和端口,sentinel3節點的服務IP和端口 比如sentinel.conf里配置為sentinel monitor my-sentinel-name 127.0.0.1 6379 2,那么這里就配置my-sentinel-name ~~~ redisson.address=my-sentinel-name,127.0.0.1:26379,127.0.0.1:26389,127.0.0.1:26399 redisson.type=SENTINEL ~~~ ### 3 集群配置示例 cluster方式至少6個節點(3主3從,3主做sharding,3從用來保證主宕機后可以高可用) 地址格式為: 127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381,127.0.0.1:6382,127.0.0.1:6383,127.0.0.1:6384 ~~~ redisson.address=127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381,127.0.0.1:6382,127.0.0.1:6383,127.0.0.1:6384 redisson.type=CLUSTER ~~~ ### 4 主從配置示例 比如:127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381 代表主節點:127.0.0.1:6379,從節點127.0.0.1:6380,從127.0.0.1:6381 ~~~ redisson.address=127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381 redisson.type=MASTERSLAVE ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看