Redis 分布式锁最大优势是高性能、易开发、并发承载能力强,适合绝大多数高并发业务场景;短板在于无法提供严格的数据一致性,主从切换存在锁丢失隐患。
一、优点
性能高效Redis 基于内存操作,加锁、解锁请求响应速度快,并发量大的互联网业务场景下性能表现优异,相比 Zookeeper 分布式锁吞吐量更高。
使用便捷,生态成熟主流开发语言都有 Redis 客户端,同时 Redisson 等框架已经封装好可重入锁、锁续期、锁重试等能力,开发简单,无需从零实现底层逻辑。
功能丰富,支持多种锁类型除普通排他锁外,支持可重入锁、读写锁、公平锁、联锁等,能够适配多样化业务并发场景。
部署灵活,拓展性强可以单机、主从、哨兵、集群多种模式部署,能够随着业务规模横向扩容,适配中小型到大型分布式系统。
二、缺点
存在锁失效风险(主从架构缺陷)主节点成功加锁,但锁数据尚未同步到从节点时,主节点宕机。从节点升级为新主节点,此时分布式锁丢失,出现并发安全问题。RedLock 方案可以缓解,但运维复杂,很少使用。
需要自行处理锁超时问题若业务执行时长超过锁过期时间,锁自动释放,会引发并发问题。需要依靠看门狗(WatchDog)实现自动续期,手写实现容易出现漏洞。
不能保证绝对强一致性Redis 是 AP 系统,优先保证可用性;在网络波动、节点故障场景下,无法像 Zookeeper(CP 模型)提供强一致性保障,不适合资金交易等极高可靠场景。
网络异常带来额外风险出现网络延迟、进程卡顿,可能导致客户端加锁成功感知延迟、解锁消息丢失,引发业务异常,开发时需要充分考虑超时、重试机制。