代码环境:spring boot项目
如何用redis设置一个全局锁,如何保证在服务器不可用时,锁可以安全释放?废话不多说,上代码,如遇到任何问题,可随时留言
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.lang.Nullable;
/**
* Created by jiangtenglong no 2020/6/3 .
*/
public class RedisLock {
Logger logger = LoggerFactory.getLogger(RedisLock.class);
//默认锁的等待时间
private int waitTime = 10 * 1000;
//每次循环所等待的时间
private static final int sleepTime = 100;
/**
* 锁超时时间,防止线程在入锁以后,无限的执行等待,设置为30秒
*/
private int expireTimes = 30 * 1000;
private boolean locked;
private String lockKey;
//锁定的时间
private long expiresLock;
RedisTemplate redisTemplate;
public RedisLock(RedisTemplate redisTemplate,RedisLockEnum redisLockEnum,final String key){
this.redisTemplate = redisTemplate;
this.lockKey = String.format(redisLockEnum.getKeyHead(),key);
}
public RedisLock(RedisTemplate redisTemplate,RedisLockEnum redisLockEnum,final String key,int waitTime){
this.redisTemplate = redisTemplate;
this.lockKey = String.format(redisLockEnum.getKeyHead(),key);
this.waitTime = waitTime;
}
public RedisLock(RedisTemplate redisTemplate,RedisLockEnum redisLoc
springboot设置redis全局锁
最新推荐文章于 2024-08-07 00:24:21 发布
本文介绍了如何在Spring Boot项目中利用RedisTemplate实现分布式全局锁,确保并发操作的安全性。
摘要由CSDN通过智能技术生成