首页 > 数据库 >Redis 快速实现分布式锁

Redis 快速实现分布式锁

时间:2023-03-17 16:33:13浏览次数:36  
标签:Redlock Redis 线程 超时 快速 节点 分布式

完备的分布式锁,需要支持哪些特性?

 

 

 

互斥性,互斥是锁的基本特征,同一时刻只能有一个线程持有锁,执行临界操作;
超时释放,超时释放是锁的另一个必备特性,可以对比 MySQL InnoDB 引擎中的 innodb_lock_wait_timeout 配置,通过超时释放,防止不必要的线程等待和资源浪费;
可重入性,在分布式环境下,同一个节点上的同一个线程如果获取了锁之后,再次请求还是可以成功;
高性能和高可用,加锁和解锁的开销要尽可能的小,同时也需要保证高可用,防止分布式锁失效;
支持阻塞和非阻塞性,对比 Java 语言中的 wait() 和 notify() 等操作,这个一般是在业务代码中实现,比如在获取锁时通过 while(true) 或者轮询来实现阻塞操作。

 

一般是通过 Redis 结合 Lua 脚本的方案实现

Redlock 算法的流程

Redlock 算法是在单 Redis 节点基础上引入的高可用模式,Redlock 基于 N 个完全独立的 Redis 节点,一般是大于 3 的奇数个(通常情况下 N 可以设置为 5),可以基本保证集群内各个节点不会同时宕机。

在 Redis 官方推荐的 Java 客户端 Redisson 中,内置了对 RedLock 的实现。

标签:Redlock,Redis,线程,超时,快速,节点,分布式
From: https://www.cnblogs.com/jiaozg/p/17227250.html

相关文章