redis分布式锁学习

发布时间 2024-01-10 22:11:02作者: Only_Aptx-4869

redis分布式锁

原理是通过setnx命令
setnx key value
如果key不存在 则设置value,如果存在则不做操作

jedis

clientId = uuid;
1、stringRedisTemplate.opsForValue.setIfAbsent(lockKey,clientId,30,TimeUnit,SE)
try{

}finally{
2、    if(clientId == stringredis.get(lockKey)){
        ringRedisTemplate.delete();
    }
}

redisson

RLock redissonLock = redosson.getLock(lockKey)
加锁:redisson.lock();看门狗机制默认锁时间30s
每个10s,会续约时间
使用lua脚本设置(lua脚本具有原子性操作)

解锁:redissonlock.unlock

从库切换主库分布式锁丢失怎么解决?

RedLock方案