Redis分布式锁正确的实现方法,加redis锁,redis加锁
Redis分布式锁正确的实现方法
首先我们要通过Maven引入Jedis开源组件,在pom.xml文件加入下面的代码:
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
@Autowired private RedisSimpleClient redisClient; 关键代码: String result = redisClient.setStr("key", "val", "NX", "EX", 30);
if("OK".equals(result)){
//加锁成功
}else{
// result == null
//加锁失败
}
参数解释:
第一个为key,我们使用key来当锁,因为key是唯一的。
第二个为value
第三个为nxxx,这个参数我们填的是NX,意思是SET IF NOT EXIST,即当key不存在时,我们进行set操作;若key已经存在,则不做任何操作;
第四个为expx,这个参数我们传的是EX (秒)或PX(毫秒),过期时间设置,具体时间由第五个参数决定。
第五个为expireTime, 代表key的过期时间。
总的来说,执行上面的set()方法就只会导致两种结果:
1. 当前没有锁(key不存在),那么就进行加锁操作,并对锁设置个有效期,同时value表示加锁的客户端。
2. 已有锁存在,不做任何操作。