Redis分布式|分布式锁、缓存一致性与微服务集成
大约 2 分钟数据库原创技术面试题解析Redis分布式微服务架构程序厨面试题
相关答案,可以联系 iamchuzi 获取
6.Redis分布式
6.0 Redis可以做消息队列吗?
6.1 并发访问(原子)
6.2 Redis 实现分布式锁
单个节点上的锁
分布式锁的实现需要两个条件
保证加锁和解锁的原子性
在共享存储上设置锁变量,必须保证锁变量的可靠性
实现分布式锁的方法
使用setnx 函数,完成分布式锁
但是这个函数有两个问题
没有id,有可能 A 加的锁,被B 给解了
加锁之后,A线程崩溃,导致锁一直未被释放
解决方法,给每个线程设置一个id,解析还需系铃人
给锁的设定设置一个有效时间,到期未解锁,则进行,主动释放。注意上诉操作要保证原子性
多个节点的锁
Redlock 算法的基本思路,是让客户端和多个独立的 Redis 实例依次请求加锁,如果客户端能够和半数以上的实例成功地完成加锁操作,那么我们就认为,客户端成功地获得分布式锁了,否则加锁失败。
缺点是锁比较重,降低业务效率。
