借鉴Redisson 实现Go的分布式锁

4,604 阅读1分钟

分布式锁,很多人都想到了redis,而且不约而同的都使用了 SET key value [EX seconds] [PX milliseconds] [NX|XX] 这个命令, 就是 set k v nx px ttl 这种命令,但是这种真的好吗。

准备

redis lua 命令 lua 命令还是学习起来很简单的.大致如下:

127.0.0.1:6379> eval "return redis.call('set',KEYS[1],'bar')" 1 foo
OK

127.0.0.1:6379> eval "return redis.call('set',ARGV[1],'11111111')" 0 foo
OK

一般就是 lua-script keys-num KEYS[1] KEYS[2] ... ARGV[1] ARGV[2], 其中调用redis命令使用 redis.call(),获取返回值使用return 关键字。

Start

引用

Redisson 是如何实现分布式锁的