<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Java | 使用 Spring Redis Lock 實現(xiàn)分布式鎖

          共 2414字,需瀏覽 5分鐘

           ·

          2021-06-07 08:38

           Spring Redis Lock 配置

          Table of Contents

          前言使用步驟1. 引入庫2. 配置 redis3. 增加配置4. 使用

          前言

          在我們項目經(jīng)常遇到并發(fā)問題,在單個項目中,使用自帶的鎖即可完成并發(fā)控制,在多個項目中,就需要使用分布式鎖來解決。這里講一下使用 Redis 來做分布式鎖實現(xiàn)方案

          使用步驟

          1. 引入庫

          在 Spring Boot 項目會根據(jù) Spring Boot 依賴管理自動配置版本號

          Maven

          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-integration</artifactId>
          </dependency>

          <dependency>
              <groupId>org.springframework.integration</groupId>
              <artifactId>spring-integration-redis</artifactId>
          </dependency>

          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-data-redis</artifactId>
          </dependency>

          2. 配置 redis

          application-xxx.yml 中配置

          spring:
            redis:
              host: 127.0.0.1
              port: 6379
              timeout: 2500
              password: xxxxx

          3. 增加配置

          RedisLockConfig.java

          import java.util.concurrent.TimeUnit;
          import org.springframework.context.annotation.Bean;
          import org.springframework.context.annotation.Configuration;
          import org.springframework.data.redis.connection.RedisConnectionFactory;
          import org.springframework.integration.redis.util.RedisLockRegistry;

          @Configuration
          public class RedisLockConfig {

            @Bean
            public RedisLockRegistry redisLockRegistry(RedisConnectionFactory redisConnectionFactory) {
              return new RedisLockRegistry(redisConnectionFactory, "redis-lock",
                  TimeUnit.MINUTES.toMillis(10));
            }
          }

          4. 使用

          @Autowired
          private RedisLockRegistry lockRegistry;

          Lock lock = lockRegistry.obtain(key);
          boolean locked = false;
          try {
            locked = lock.tryLock();
            if (!locked) {
              // 沒有獲取到鎖的邏輯    
            }

            // 獲取鎖的邏輯
          finally {
            // 一定要解鎖
            if (locked) {
              lock.unlock();
            }
          }


          瀏覽 79
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲精品操逼 | 大香蕉欧美 | 无码操逼视频免费有声音 | 国产大鸡巴操逼 | 亚洲色婷婷五月 |