【分布式锁】什么是分布式锁?分布式锁的作用?
什么是分布式锁
分布式锁是一种用于在分布式系统中协调多个节点对共享资源的访问的机制。它确保在多个节点并发访问时,只有一个节点可以在某个时刻拥有特定资源的访问权,从而避免数据不一致、竞争条件或资源冲突的问题。常用的实现方式有Redis,Zookeeper。我们这篇主要讲解Redis.
为什么要使用分布式锁?为什么不直接使用本地锁呢?
因为本地锁是JVM级别的,它只能锁住当前线程,经过分布式部署之后,每台服务器在并发情况下只能锁住一个线程,因此需要使用分布式锁。
这种情况下经过Nginx反向代理后,如果使用本地锁,只能锁住当前线程。
为什么Redis可以实现分布式锁
由于Redis本身可以被多个客户端共享访问,因此可以作为存储锁的容器。而且Redis中set还有个NX选项,作用是如果集合中存在key就插入失败,如果不存在,则插入成功。我们可以基于这个实现分布式锁。即当集合中不存在该key时,插入成功,表示获取到锁了,如果插入失败,说明此时没有获取到锁。