用Redis实现一个最简分布式锁
一、什么是分布式锁
分布式锁,简单来说就是在分布式环境下不同实例之间抢一把锁。和普通的锁比起来,也就是抢锁的从线程(协程)变成了实例。分布式锁和网络相关。
总的来说就是:不同的进程通过网络通信去抢存在于redis中的一把锁。
在分布式环境下去抢一把锁可能会有以下这几种情况:
-
抢到了
-
没抢到
-
网络通信超时了(重点)
拓展:非分布式锁,一般在同一个进程中,里面几个goroutine在抢同一把锁。这时候存在两种情况,抢到和没抢到。实现起来相对简单一些。
二、如何实现
从本质来说,Redis的分布式锁就是一个键值对。所以实现一个分布式锁的起点,就是利用setnx命令,确保可以排他地设置一个键值对。
</