Redisson
方式1
引入依赖
<!-- https://mvnrepository.com/artifact/org.redisson/redisson --> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.15.1</version> </dependency>
配置文件application.properties
# 自定义配置 redisson.url=redis://127.0.0.1:6379
配置类
import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.redisson.config.Config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class RedissonConfig { @Value("${redisson.url}") private String redisUrl; @Bean public RedissonClient getRedissonClient(){ Config config = new Config(); config.useSingleServer().setAddress(redisUrl); return Redisson.create(config); } }
使用
import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class DemoService { @Autowired private RedissonClient redissonClient; public void doSomething(){ RLock lock = redissonClient.getLock("lock_key"); try { lock.lock(); // TODO 业务逻辑 } finally { lock.unlock(); } } }
方式2:
依赖
<!-- https://mvnrepository.com/artifact/org.redisson/redisson-spring-boot-starter --> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>3.15.1</version> </dependency>
配置文件application.properties(这种方式完全兼容SpringBoot配置)
spring.redis.host=127.0.0.1
spring.redis.port=6379
使用
import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class DemoService { @Autowired private RedissonClient redissonClient; public void doSomething(){ RLock lock = redissonClient.getLock("lock_key"); try { lock.lock(); // TODO 业务逻辑 } finally { lock.unlock(); } } }
spring-integration-redis
依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <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>
配置文件application.properties
spring.redis.host=127.0.0.1
spring.redis.port=6379
配置类
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, "registry_key"); } }
使用
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.integration.redis.util.RedisLockRegistry; import org.springframework.stereotype.Service; import java.util.concurrent.locks.Lock; @Service public class DemoService { @Autowired private RedisLockRegistry redisLockRegistry; public void doSomething(){ Lock lock = redisLockRegistry.obtain("lock_key"); try { lock.lock(); // TODO 业务逻辑 } finally { lock.unlock(); } } }