扫码关注微信公众号

回复“面试手册”,获取本站PDF版

回复“简历”,获取高质量简历模板

回复“加群”,加入程序员交流群

回复“电子书”,获取程序员类电子书

当前位置: 计算机基础 > Redis高频面试题 > 32.分布式锁的实现方法?

基本思路就是要在整个系统中提供一个全局、唯一的获取锁的“东西”,然后每个系统在需要加锁时,都去问这个“东西”拿到一把锁,这样不同的系统拿到的就可以认为是同一把锁。

常见的分布式锁实现方案有三种:

基于关系型数据库

优点:直接借助数据库容易理解

缺点: 在使用关系型数据库实现分布式锁的过程中会出现各种问题,例如数据库单点问题和可重入问题,并且在解决过程中会使得整个方案越来越复杂

基于Redis

优点:性能好,实现起来较为方便

缺点

  • key的过期时间设置难以确定,如何设置的失效时间太短,方法没等执行完,锁就自动释放了,那么就会产生并发问题。如果设置的时间太长,其他获取锁的线程就可能要平白的多等一段时间。
  • Redis的集群部署虽然能解决单点问题,但是并不是强一致性的,锁的不够健壮

基于zookeeper

优点:有效地解决单点问题,不可重入问题,非阻塞问题以及锁无法释放的问题,实现起来较为简单。

缺点:性能上不如使用缓存实现分布式锁

三种方案的对比

方案复杂度性能可靠性学习成本
基于关系型数据库
基于Redis
基于zookeeper
三种方案的对比

点击面试手册,获取本站面试手册PDF完整版