redisssion 工具類
引入jar包
<redisson.version>3.13.4</redisson.version>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>${redisson.version}</version>
</dependency>
//配置項(xiàng)
public class RedissonManager { private static Config config = new Config(); //聲明redisso對(duì)象 private static Redisson redisson = null; //實(shí)例化redisson static{ config.useSingleServer().setAddress("redis://127.0.0.1:6379").setPassword("xxxx"); //得到redisson對(duì)象 redisson = (Redisson) Redisson.create(config); } //獲取redisson對(duì)象的方法 public static Redisson getRedisson(){ return redisson; }
//加鎖
@Slf4j public class DistributedRedisLock { //從配置項(xiàng)獲取redisson對(duì)象 private static final Redisson redisson = RedissonManager.getRedisson(); private static final String LOCK_TITLE = "REDIS_LOCK_"; //加鎖 public static boolean acquire(String lockName) { //聲明key對(duì)象 String key = LOCK_TITLE + lockName; //獲取鎖對(duì)象 RLock lock = redisson.getLock(key); lock.lock(); //lock.lock(10,TimeUnit.SECONDS); 這種是10秒后鎖自動(dòng)過(guò)期,不會(huì)有自動(dòng)續(xù)期的機(jī)制 //boolean res = lock.tryLock(100, 10, TimeUnit.SECONDS); 嘗試加鎖,最多等待100秒,上鎖以后10秒自動(dòng)解鎖 log.info("加鎖lock--------------------------------->" + Thread.currentThread().getName()); //加鎖成功 return true; }
//鎖的釋放
public static void release(String lockName) { //必須是和加鎖時(shí)的同一個(gè)key String key = LOCK_TITLE + lockName; //獲取所對(duì)象 RLock lock = redisson.getLock(key); //釋放鎖(解鎖) lock.unlock(); log.info("釋放鎖unlock--------------------------------->" + Thread.currentThread().getName()); } }
posted on 2023-04-26 14:26 安之于情 閱讀(343) 評(píng)論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)