redis锁

概述
2.2.0版本的redis锁功能由com.jeedev.msdp.standard.cache.redis.RedisLockClient提供,是一个基于spring-data-redis的实现的redis操作工具,区别于之前的CacheClient。

RedisLockClient提供基础的redis操作功能,以及获取redis锁的功能,获得的锁是com.jeedev.msdp.standard.cache.redis.RedisLock类的实例。

使用说明
1,配置

如果项目中没有声明RedisLockClient的Bean,应该先声明:

要注意的是编号生成器模块的/spring/applicationContext-task.xml文件已经声明过这个Bean,如果项目配置中已经引入这个配置文件,就不需要重复声明了。

2,api

获取锁的方法:

//使用默认的锁过期时间和请求锁的超时时间
//lockKey String 锁的key(Redis的Key)
RedisLock lock = redisLockClient.getRedisLock(lockKey);

//使用默认的请求锁的超时时间,指定锁的过期时间
//lockKey String 锁的key(Redis的Key)
//expireTime int 锁的过期时间(单位:秒)
RedisLock lock = redisLockClient.getRedisLock(lockKey, expireTime);

//lockKey String 锁的key(Redis的Key)
//timeOut long 请求锁的超时时间(单位:毫秒)
RedisLock lock = redisLockClient.getRedisLock(lockKey, timeOut);
使用案例:立刻获得锁

//立刻获得锁
if (lock.lock()) {
//成功操作

//操作完成解锁
redisLock.unlock()

} else {
//失败操作
}
使用案例:尝试获得锁,tryLock会在指定时间内循环取锁,直到取到锁或者超时

//尝试获得锁
if (lock.tryLock()) {
//成功操作

//操作完成解锁
redisLock.unlock()

} else {
//失败操作
}
使用案例:阻塞获得锁,lockBlock会一直循环取锁,直到取到锁

//阻塞获得锁
if (lock.lockBlock()) {
//成功操作

//操作完成解锁
redisLock.unlock()

} else {
//失败操作
}
注意:取锁成功后进行业务操作,如果发生异常,应该将解锁代码放到finally代码块,如果没有释放锁,锁会一直持续到过期;锁默认有效时间是60秒。 如果业务需要一直锁到过期为止,就当我没说╮( ̄▽ ̄)╭。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值