Redis 分布式锁 + 部署模式

Redis 分布式锁 + 部署模式(面试满分答案,直接背)

我给你最标准、最简洁、面试官最爱听的版本,分两块讲:

  1. Redis 分布式锁怎么实现?(原理 + 问题 + 红锁)
  2. Redis 有哪些部署模式?(5 种,一句话记住)

一、Redis 分布式锁(面试必考)

1. 一句话核心原理

利用 Redis 单线程命令执行的原子性,通过 SETNX + 过期时间 实现互斥独占锁,防止多个节点同时操作共享资源。

2. 标准实现命令(必须正确)

正确命令:

复制代码
SET lock_key unique_value NX PX 30000
  • NX:只有不存在时才能设置(互斥)
  • PX 30000:30秒过期(防止死锁)
  • unique_value:唯一值(防止别人误删我的锁)

3. 完整流程

  1. 线程获取锁:SET key 唯一值 NX PX 超时时间
  2. 执行业务逻辑
  3. 通过 Lua 脚本释放锁(判断唯一值 + 删除,原子性)

4. 为什么必须用 Lua 删锁?

因为:

判断锁是否属于自己 + 删除锁 必须是原子操作,否则并发会出现删别人锁的问题。

Lua 脚本:

lua 复制代码
if redis.call("get",KEYS[1]) == ARGV[1]
then
    return redis.call("del",KEYS[1])
else
    return 0
end

5. 分布式锁存在的问题(面试加分)

  1. 锁超时:业务执行时间 > 锁过期时间 → 锁被自动释放
  2. 主从切换问题:主节点加锁,同步到从节点前主挂了 → 从变主,锁丢失
  3. 不可重入:需要自己实现重入(用 Hash 存储)

6. 解决主从锁丢失:Redlock(红锁)

原理:

  • N/2 + 1 个独立 Redis 节点 加锁
  • 大多数加锁成功才算成功
  • 避免单点/主从切换丢锁

面试一句话:

Redlock 是针对 Redis 集群/主从模式下锁丢失问题的解决方案,通过向多个独立实例加锁,确保强一致性。


二、面试标准答案(直接背)

Redis 分布式锁通过 SET 命令带上 NX(互斥)和 PX(超时)实现,保证原子性;
必须设置唯一值,并用 Lua 脚本原子释放锁,避免误删;
解决了分布式下并发安全问题,但存在锁超时、主从切换丢锁问题,可通过 Redlock 红锁保证高可靠。


三、Redis 部署模式(5 种,面试必问)

1. 单机模式(Standalone)

  • 单实例
  • 测试用,生产不用

2. 主从模式(Master-Slave)

  • 一主多从
  • 主写、从读
  • 无自动故障转移

3. 哨兵模式(Sentinel)

  • 主从 + Sentinel 集群
  • 自动监控、故障转移、主节点自动切换
  • 生产常用

4. 集群模式(Redis Cluster)

  • 多主多从
  • 数据分片存储(16384 个槽)
  • 横向扩展,高并发
  • 生产大规模用

5. 云托管模式(如阿里云Redis)

  • 厂商托管,不用自己运维

四、部署模式面试标准答案(直接背)

Redis 部署模式有 5 种:单机、主从、哨兵、集群、云托管。
主从实现读写分离;哨兵实现高可用自动切换;集群实现分片扩容,支撑高并发。


五、终极精简版(30 秒背完)

分布式锁

SET key 唯一值 NX PX 超时,Lua删锁,防死锁、误删,主从切换丢锁用Redlock。

部署模式

单机 → 主从 → 哨兵(高可用)→ 集群(分片并发)。


相关推荐
盛世宏博智慧档案37 分钟前
全国100个分布式机房环境温湿度智能监测系统建设方案
分布式·机房·温湿度
六bring个六2 小时前
分布式设备连接对端失败问题分析
分布式·分布式软总线
2602_959960926 小时前
电商大厂Java面试实录:Spring Boot/JVM/Redis/Kafka/微服务/安全/测试全解析
java·jvm·spring boot·redis·面试题
天涯明月19937 小时前
ray深度研究报告
大数据·人工智能·分布式·ray
小的~~8 小时前
面试被问懵了?为什么 Redis 单线程还能保证 Lua 脚本原子性,却偏偏选了 Lua?
redis·面试·lua
Rain的Java大神之路17 小时前
介绍一下分布式事务
java·分布式·后端·spring·spring cloud·架构·springcloud
做一个AK梦1 天前
Redis 深入浅出
java·数据库·redis·缓存
ruleslol1 天前
Redis 雪崩与服务降级
数据库·redis
Java牛马1 天前
Caffeine 缓存及其应用相关总结
java·redis·缓存·caffeine·数据一致性·本地缓存
李可以量化1 天前
Redis 从了解到精通(三)上:量化交易场景下的数据备份与安全配置
redis·python·安全·qmt·ptrade