微信公众号:路人zhang
网站救助计划

1.为阅读体验,本站无任何广告,也无任何盈利方法,站长一直在用爱发电,现濒临倒闭,希望有能力的同学能帮忙分担服务器成本


2.捐助10元及以上同学,可添加站长微信lurenzhang888,备注捐助网站倒闭后可联系站长领取本站pdf内容


3.若网站能存活下来,后续将会持续更新内容

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

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

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

基于关系型数据库

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

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

基于Redis

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

缺点

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

基于zookeeper

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

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

三种方案的对比

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

本站链接:https://www.mianshi.online如需勘误或投稿,请联系微信:lurenzhang888


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