正确的redis分布式锁4种实现方式-Java
实现原理
redis 实现分布式锁主要用到的是 redis 的一个命令 setnx (如果key不存在就设置成功,如果key存在则设置失败) 和 setex(为key设置超时时间) 。
方案1 - 原生 redis java客户端 Jedis 实现分布式锁
1 maven 依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.1.0</version>
</dependency>
2 配置文件 application.properties
server.port=8089
spring.application.name=springboots-redis
spring.redis.host=127.0.0.1
spring.redis.port=6379
3 创建 Jedis 数据源
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
@Configuration
@ConfigurationProperties(prefix = "spring.redis")
@Data
public class RedisConfig {
private String host;
private int port;
@Bean
public JedisPool generateJedisPoolFactory() {
JedisPoolConfig poolConfig = new JedisPoolConfig();
JedisPool jedisPool = new JedisPool(poolConfig, host, port, 3000